2012-03-12 29 views
30

Tôi cần có nhiều khóa trong ứng dụng khách của mình để truy cập hai tài khoản khác nhau trên Lưu trữ lưu trữ. Xem https://redefy.repositoryhosting.com/support -> Làm cách nào để quản lý nhiều tài khoản với nhiều cặp khóa trên máy khách của tôi?Chuyển đổi giữa nhiều khóa ssh trong Git trên Windows

Tôi không hiểu cách thay đổi giữa các khóa ssh khác nhau trong Git trên Windows, bất kỳ ai cũng có thể giúp tôi không?

+0

Bạn đang sử dụng OpenSSH hoặc Plink cho các kết nối SSH của bạn? –

+0

Bạn có thể tìm hiểu thêm về cách thiết lập ssh trong [Cách tốt nhất để sử dụng nhiều khóa riêng tư ssh trên một máy khách] (http://stackoverflow.com/questions/2419566/best-way-to-use-multiple-ssh-private- keys-on-one-client) – peron

Trả lời

37

Tôi giả sử bạn sử dụng git bash và openssh.

Giống như nội dung được viết trong bài viết, bạn có thể tạo tệp cấu hình cho ứng dụng khách ssh liệt kê tất cả các tài khoản của bạn. Bạn có thể viết các cấu hình sau đây trong tập tin cấu hình ssh client của riêng bạn trong ~/.ssh/config

Host account-one 
HostName server.example.com 
User user-one 
IdentityFile ~/.ssh/key-one 

Host account-two 
HostName server.example.com 
User user-two 
IdentityFile ~/.ssh/key-two 

gì nó nói là bạn xác định hai, loại, "chủ bí danh" tên account-oneaccount-two. Nếu bạn sử dụng chúng, khi tạo kết nối, ứng dụng khách ssh sẽ sử dụng HostName, UserIdentityFile tương ứng cho địa chỉ máy chủ, tên người dùng và tệp khóa ssh. Với điều này, bạn có thể sử dụng chúng để truy cập vào tài khoản và các khóa của bạn ngay cả cùng một máy chủ.

Trong git, bạn có thể xác định hai điều khiển từ xa sử dụng chúng

$ git remote add one account-one:repository.git 
$ git remote add two account-two:repository.git 

sau đó bạn có thể đẩy tới những điều khiển từ xa

$ git push one master 
$ git push two master 
+0

hi, Làm thế nào tôi sẽ sao chép bằng tập tin cấu hình này. "$ git clone một master repositoyr.git" cho lỗi "Quá nhiều đối số" – Tariq

+0

Đừng quên thêm dấu hai chấm giữa tên máy chủ và đường dẫn kho lưu trữ. Trong trường hợp của bạn, nó sẽ là 'một: repositoyr.git' – fajran

+0

như được chỉ rõ trong tài liệu tại đây http://linux.die.net/man/5/ssh_config IdentityFile Chỉ định một tệp mà từ đó danh tính xác thực RSA hoặc DSA của người dùng được đọc . Tên tệp có thể sử dụng cú pháp dấu ngã để chỉ thư mục chính của người dùng hoặc một trong các ký tự thoát sau: '% d' (thư mục chính của người dùng cục bộ), '% u' (tên người dùng cục bộ), '% l' (tên máy chủ cục bộ), '% h' (tên máy chủ từ xa) hoặc '% r' (tên người dùng từ xa). ví dụ IdentityFile% u/.ssh/id_rsa –

0

Tôi sẽ trả lời điều này một cách gián tiếp. Trước đây tôi đã sử dụng git bash và tôi thấy rằng khi tôi đang sử dụng git thông qua git bash shell, nó hoạt động giống như một shell mac hoặc linux bash. Có nghĩa là, khi sử dụng git bash, tôi có thể trả lời câu hỏi của bạn như:

'Nếu bạn sử dụng git bash, bạn có thể quản lý nhiều tài khoản giống như bạn đang sử dụng Linux hoặc mac, sử dụng ssh-agent/ssh- thêm và bạn bè '

2

Trên Windows, bạn nên thử Pageant một tác nhân xác thực SSH cho PuTTY, PSCP, PSFTP và Plink. Công cụ này có thể quản lý các khóa ssh của bạn và các cụm từ mật khẩu của nó. Để sử dụng nó cùng với Git, bạn phải cài đặt Putty và liên kết đến thiết lập plink.exe biến GIT_SSH.

  1. Install Putty và bạn bè (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)
  2. Set GIT_SSH

    set GIT_SSH=<path-to-plink.exe>

  3. Bắt đầu Pageant và thêm bạn phím
  4. Run Git

hth Daniel

7

Phím nào được sử dụng cho máy chủ nào được xử lý bởi chương trình SSH mà git đang sử dụng để kết nối. Trong thiết lập mặc định, đây là dòng lệnh SSH client (openSSH?).

sử dụng OpenSSH bạn có thể cấu hình keyfiles đặc biệt đối với máy chủ cụ thể trong file ~/.ssh/config:

Host foo.example.com 
    IdentityFile ~/.ssh/foo.example.com-id_rsa 

Host bar.example.com 
    IdentityFile ~/.ssh/bar.example.com-id_rsa 

đâu ~/.ssh/*.example.com-id_rsa là các tập tin khóa riêng cho mỗi máy chủ.

Tôi hy vọng điều này sẽ hữu ích.

+0

Các đường dẫn có bị gạch chéo ngay cả khi bạn đang chạy trên Windows không? –

+0

tất cả các đường dẫn đều giống nhau, vì vậy nếu bạn đang sử dụng Cygwin trên cửa sổ, chúng sẽ hoạt động, nếu bạn đang sử dụng thứ gì khác làm vỏ của mình, bạn sẽ cần phải điều chỉnh chúng. – mamapitufo

+0

Cảm ơn! Tôi chỉ thấy rằng bạn cũng có thể sử dụng sth. như "/C/Users/Benny/.ssh/id_rsa" trên Windows. –

Các vấn đề liên quan