SVN + SSH, tidak harus melakukan ssh-add setiap saat? (Mac OS)

105

Saya tahu jawabannya ada di luar sana, tetapi saya cukup bodoh dan Unix dan mungkin tidak akan mengenali solusinya jika itu mengenai wajah saya.

Saya menggunakan Mac, menghubungkan ke server SVN melalui tunneling SSH. Saya harus ssh-add privateKey.txtsetiap kali saya ingin terhubung ke server SVN (Cornerstone dan Xcode terhubung ke SVN).

Apakah ada cara untuk "menyimpan" kunci di suatu tempat sehingga saya tidak perlu melakukan ini setiap saat? Tambahkan ke Keychain saya? Beberapa file konfigurasi? Mulai skrip?

James J.
sumber

Jawaban:

172

Pertama, pindahkan file kunci pribadi Anda ke ~/.ssh. Ini tidak sepenuhnya diperlukan tetapi ini adalah tempat standar untuk hal-hal seperti itu.

Lalu lari ssh-add -K ~/.ssh/privateKey.txt. Ini akan meminta frasa sandi Anda jika perlu, lalu menambahkannya ke Keychain Anda.

Setelah itu, Anda tidak perlu melakukan apa pun. Penjelasan yang sedikit lebih panjang tersedia di sini .

Nicholas Riley
sumber
17
Saya pikir perlu dicatat secara eksplisit bahwa ini adalah hal Mac, bukan hal Unix universal. Di Ubuntu, ssh-addtidak dapat mengambil -Kargumen.
Mark Amery
2
Saya ingin mencatat bahwa meskipun artikel tertaut untuk Leopard, ini masih berfungsi di OS X Mavericks.
Josh Brown
1
Mungkin seseorang memiliki perintah yang setara untuk lingkungan lain? mysysgit's ssh-add juga tidak menerima argumen -K
Blake
5
Untuk beberapa alasan ketika saya melakukan -KI masih memiliki masalah setelah restart
Mat Teague
7
Apakah Anda menggunakan macOS Sierra? Perilaku telah berubah dan Anda sekarang perlu secara eksplisit menambahkan kunci Anda ke ssh-agent saat masuk: github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Nicholas Riley
49

Menyimpan Frasa Sandi di Gantungan Kunci

Untuk menyimpan kata sandi untuk kunci default Anda di Keychain, buka Terminal dan jalankan:

ssh-add -K

Dan untuk menyimpan frasa sandi untuk menjalankan kunci yang berbeda:

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

Ketika diminta kata sandi Anda, masukkan dan hanya itu.

Anda tidak perlu menjalankan ssh-add atau memasukkan kata sandi Anda lagi.

Jawaban diambil dari situs ini: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

Adam
sumber
20

Setelah banyak eksplorasi, saya rasa saya telah menemukan jawaban untuk masalah ini sepenuhnya. Pertama, pastikan Anda melakukannya ssh-add -K ~/.ssh/your_key_here. Ini menambahkan kunci ke rantai kunci Anda. Di beberapa tempat, saya telah membaca bahwa ini sudah cukup, tetapi saya tidak yakin. Ini juga khusus untuk mac, jadi jika Anda perlu melakukan ini pada rasa unix lain, Anda tidak perlu opsi ini.

Untuk ukuran yang baik, saya mengedit ~/.ssh/configfile (Anda mungkin harus membuatnya) untuk menunjuk ke semua kunci yang saya miliki. Milik saya memiliki yang berikut:

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

Menurut halaman manual untuk ssh_config, ia akan mencobanya secara berurutan. Saya tidak yakin apakah tiga default pertama yang saya cantumkan perlu ada di sana, tetapi saya tetap menyertakannya.

mitalia
sumber
Tidak ada -Kbendera di mac os x untukssh-add
dr.dimitru
2
Ada adalah sebuah -Kbendera pada OS X untuk ssh-add. Selain itu, ini harus menjadi jawaban yang dipilih.
kaiser
1
Pastikan Anda menggunakan /usr/bin/ssh-addhomebrew yang disediakan /usr/local/bin/ssh-addtidak menyediakan opsi -K.
Remco Wendt
2
Setelah ~/.ssh/configada, tidak perlu menjalankan ssh-addperintah setiap kali setelah reboot mesin.
hailong
7

Sejak macOS 10.12.2 Anda dapat menggunakan UseKeychainopsi ini. Baca lebih lanjut di sini atau lihat 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''.

Jadi lakukan saja berikut ini:

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

Ben
sumber
3
Ini perlu naik. Sangat penting !
quarezz
2

Saya tidak memiliki banyak pengalaman dengan Mac, jadi tidak yakin apakah versi ini cocok untuk Anda, tetapi lihatlah di http://www.phil.uu.nl/~xges/ssh/

Jika aplikasi khusus ini tidak berfungsi, lagipula itulah yang Anda cari - ssh agent. Pada kotak mirip unix, Anda ingin memulai seluruh pengelola jendela Anda melalui itu, untuk mendapatkan efek global, tetapi mungkin tidak dapat dilakukan di osx.

Beberapa info lebih lanjut: http://www-uxsup.csx.cam.ac.uk/~aia21/osx/leopard-ssh.html

viraptor
sumber
1

sshkeychain adalah salah satu kemungkinan. menginstal dengan baik dengan macports menggunakan:

sudo port install sshkeychain

itu menggunakan rantai kunci untuk menyimpan kata sandi, dan Anda dapat meluncurkannya saat memulai sesi login Anda (menggunakan pada peluncuran pertama klik kanan-kanan biasa di ikon dok + "luncurkan saat startup")

Perhatikan bahwa svn Apple menggunakan rantai kunci untuk menyimpan kata sandi tetapi tidak harus biner svn yang akan Anda buat dengan macports.

meduz
sumber
0

Tambahkan kunci Anda ke rantai kunci dengan menjalankan:

ssh-add -K ~/.ssh/id_rsa

dan edit ~/.ssh/configfile config ( ) ssh Anda untuk secara otomatis memuat kunci dari key chain ke ssh-agent ( AddKeysToAgent yesopsi) dan simpan frasa sandi di keychain ( UseKeychain yesopsi):

Host *
 AddKeysToAgent yes
 UseKeychain yes
Jakub Kukul
sumber