SVN + SSH, không phải thực hiện thêm ssh-add mỗi lần? (Hệ điều hành Mac)


105

Tôi biết câu trả lời đã có, nhưng tôi khá ngớ ngẩn về Unix và có lẽ sẽ không nhận ra giải pháp nếu nó đập vào mặt tôi.

Tôi đang sử dụng máy Mac, kết nối với máy chủ SVN qua đường hầm SSH. Tôi phải ssh-add privateKey.txtkết nối mỗi khi tôi muốn kết nối với máy chủ SVN (Cả Cornerstone và Xcode đều đang kết nối với SVN).

Có cách nào để "lưu" chìa khóa ở đâu đó để tôi không phải làm điều này mỗi lần không? Thêm nó vào Chuỗi khóa của tôi? Một số tệp cấu hình? Bắt đầu tập lệnh?

Câu trả lời:


172

Đầu tiên, hãy chuyển tệp khóa riêng của bạn vào ~/.ssh. Điều này không hoàn toàn cần thiết nhưng đó là nơi tiêu chuẩn cho những thứ như vậy.

Sau đó chạy ssh-add -K ~/.ssh/privateKey.txt. Nó sẽ nhắc cụm mật khẩu của bạn nếu cần, sau đó thêm nó vào Chuỗi khóa của bạn.

Sau đó, bạn không cần phải làm bất cứ điều gì khác. Một lời giải thích dài hơn một chút có sẵn ở đây .


17
Tôi cho rằng cần lưu ý rõ ràng rằng đây là một thứ Mac, không phải là một thứ Unix phổ biến. Trên Ubuntu, ssh-addkhông thể -Ktranh cãi.
Mark Amery

2
Tôi muốn lưu ý rằng mặc dù bài viết được liên kết dành cho Leopard, nhưng điều này vẫn hoạt động trong OS X Mavericks.
Josh Brown

1
Có thể ai đó có một lệnh tương đương cho các môi trường khác? ssh-add của mysysgit cũng không chấp nhận đối số -K
Blake

5
Đối với một số lý do khi tôi làm -KI vẫn có vấn đề sau khi khởi động lại
Mat Teague

7
Bạn đang sử dụng macOS Sierra? Các hành vi đã thay đổi và bây giờ bạn cần phải thêm một cách rõ ràng các phím của bạn để ssh-agent trên đăng nhập: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley

49

Lưu trữ cụm mật khẩu trong chuỗi khóa

Để lưu trữ cụm mật khẩu cho khóa mặc định của bạn trong Chuỗi khóa, hãy mở một Thiết bị đầu cuối và chạy:

ssh-add -K

Và để lưu trữ cụm mật khẩu cho một lần chạy khóa khác:

ssh-add -K /path/to/private/key/file

Khi được nhắc nhập cụm mật khẩu của bạn, hãy nhập cụm từ đó và thế là xong.

Bạn sẽ không bao giờ cần chạy ssh-add cũng như nhập lại cụm mật khẩu của mình.

Câu trả lời được lấy từ trang web này: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html


20

Sau nhiều tìm hiểu, tôi nghĩ mình đã hoàn toàn tìm ra câu trả lời cho vấn đề này. Trước tiên, hãy chắc chắn rằng bạn làm ssh-add -K ~/.ssh/your_key_here. Điều này sẽ thêm chìa khóa vào chuỗi khóa của bạn. Một số nơi, tôi đã đọc rằng điều này là đủ, nhưng tôi không chắc chắn. Điều này cũng dành riêng cho mac, vì vậy nếu bạn cần thực hiện việc này trên một phiên bản unix khác, bạn sẽ không nhất thiết phải có tùy chọn này.

Để có biện pháp tốt, tôi đã chỉnh sửa ~/.ssh/configtệp (bạn có thể phải tạo nó) để trỏ đến tất cả các khóa tôi có. Của tôi có những thứ sau:

IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa 
IdentityFile ~/.ssh/my_other_identity_here
IdentityFile ~/.ssh/yet_another_identity_here

Theo trang người đàn ông cho ssh_config, nó sẽ thử những thứ này theo thứ tự. Tôi không chắc liệu ba cái mặc định đầu tiên mà tôi đã liệt kê có cần phải ở đó hay không, nhưng dù sao thì tôi cũng đã bao gồm chúng.


Không có -Kcờ trên mac os x chossh-add
dr.dimitru

2
một -Klá cờ trên OS X cho ssh-add. Thêm vào đó, đây sẽ là câu trả lời được chọn.
kaiser

1
Đảm bảo rằng bạn sử dụng /usr/bin/ssh-addhomebrew được cung cấp /usr/local/bin/ssh-addkhông cung cấp tùy chọn -K.
Remco Wendt

2
Sau khi ~/.ssh/configở đó, không cần phải chạy ssh-addlệnh mọi lúc sau khi khởi động lại máy.
hailong

7

Kể từ macOS 10.12.2, bạn có thể sử dụng UseKeychaintùy chọn này. Đọc thêm ở đây hoặc xem xét man ssh_config.

     UseKeychain
         On macOS, specifies whether the system should search for passphrases in the user's keychain
         when attempting to use a particular key. When the passphrase is provided by the user, this
         option also specifies whether the passphrase should be stored into the keychain once it has
         been verified to be correct.  The argument must be ``yes'' or ``no''.  The default is ``no''.

Vì vậy, chỉ cần làm như sau:

echo "UseKeychain yes" >> ~/.ssh/config


3
Điều này cần phải đi lên. Rất quan trọng !
quarezz

2

Tôi không có nhiều kinh nghiệm về máy Mac, vì vậy không chắc liệu phiên bản này có phù hợp với bạn hay không, nhưng hãy xem tại http://www.phil.uu.nl/~xges/ssh/

Nếu ứng dụng cụ thể này không hoạt động, đó là những gì bạn đang tìm kiếm - ssh agent. Trên các hộp giống unix, bạn muốn bắt đầu toàn bộ trình quản lý cửa sổ của mình thông qua đó, để có được hiệu ứng toàn cầu, nhưng điều này có thể không thực hiện được trong osx.

Một số thông tin khác: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html


1

sshkeychain là một trong những khả năng. cài đặt tốt với macports bằng cách sử dụng:

sudo port install sshkeychain

nó sử dụng chuỗi khóa để lưu trữ mật khẩu và bạn có thể chỉ cần khởi chạy nó khi bắt đầu phiên đăng nhập của mình (sử dụng ở lần khởi chạy đầu tiên, nhấp chuột phải thông thường vào biểu tượng của thanh dock + "khởi chạy khi khởi động")

Lưu ý rằng svn của Apple sử dụng keychain để lưu trữ mật khẩu nhưng không nhất thiết phải là nhị phân svn mà bạn sẽ xây dựng với macports.


0

Thêm khóa của bạn vào chuỗi khóa bằng cách chạy:

ssh-add -K ~/.ssh/id_rsa

và chỉnh sửa ~/.ssh/configtệp cấu hình ssh ( ) của bạn để tự động tải các khóa từ chuỗi khóa vào ssh-agent ( AddKeysToAgent yestùy chọn) và lưu trữ cụm mật khẩu trong chuỗi khóa ( UseKeychain yestùy chọn):

Host *
 AddKeysToAgent yes
 UseKeychain yes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.