Saya mengerti bahwa sejak Mac OS X Leopard Keychain telah mendukung penyimpanan kunci SSH. Bisakah seseorang tolong jelaskan bagaimana fitur ini seharusnya berfungsi.
Saya memiliki beberapa kunci RSA yang saya hasilkan disimpan di direktori ~ / .ssh saya untuk mengakses berbagai server. Saya tidak memiliki kata sandi yang ditetapkan pada kunci-kunci itu. Saat ini untuk masuk ke server-server itu saya menggunakan perintah-perintah berikut di Terminal:
eval `ssh-agent` ssh-add ~ / .ssh / some_key_rsa ssh user @ server
(Saya telah menulis beberapa fungsi Bash untuk membuatnya lebih mudah.)
Apakah ada cara yang lebih baik untuk melakukan ini menggunakan Keychain?
ssh-add
untuk menambahkan identitas RSA saya ke agen ssh default mulai saat masuk?$HOME/.ssh/authorized_keys
di server itu. Agen-ssh + keychain Mac OS hanya digunakan untuk menyimpan frasa sandi untuk kunci ssh lokal Anda; itu tidak dimaksudkan untuk mengirim kata sandi jarak jauh melalui koneksi ssh yang ada.ssh -v
untuk mendiagnosis apa yang ssh lakukan. juga digunakansshd -p 8900 -v
di sisi server danssh -v remote:8900
untuk mendiagnosis apa yang dilakukan sshd.Pada rilis Leopard OS X, ssh-agent lebih terintegrasi dengan Keychain. Dimungkinkan untuk menyimpan frasa sandi semua kunci SSH Anda dengan aman di Gantungan Kunci, dari mana ssh-agent akan membacanya saat startup. Intinya adalah mudah untuk mengamankan kunci Anda dengan frasa sandi, tetapi tidak perlu mengetikkan frasa sandi untuk menggunakannya! Begini caranya:
Tambahkan frasa sandi ke setiap kunci ssh ke gantungan kunci: (opsi -k memuat hanya kunci privat, melompati sertifikat)
(perhatikan itu huruf kapital K)
Setiap kali Anda menyalakan ulang Mac, semua kunci SSH di gantungan kunci Anda akan secara otomatis dimuat. Anda harus dapat melihat kunci di aplikasi Keychain Access, dan juga dari baris perintah melalui:
sumber
ssh-add -l
tidak mencantumkan kunci apa pun saat menghubungkan dari jarak jauh (di mana $ DISPLAY tidak disetel). Trik khusus perlu digunakan di sini untuk menggunakan gantungan kunci (mis. Di superuser.com/questions/141044/… )/usr/bin/ssh-add
.ssh-add -l
mengembalikan "Agen tidak memiliki identitas." (ps aux
termasuk/usr/bin/ssh-agent -l
).Pada macOS Sierra , ssh-agent tidak lagi memuat secara otomatis kunci ssh yang dimuat sebelumnya ketika Anda masuk ke akun Anda. Ini disengaja pada bagian Apple, mereka ingin menyelaraskan kembali dengan implementasi OpenSSH utama . [1]
Seperti yang dijelaskan di sini , ini adalah metode yang disarankan sejak macOS 10.12.2 :
Tambahkan baris berikut ke
~/.ssh/config
file Anda :Kunci apa pun yang Anda tambahkan ke ssh-agent menggunakan
ssh-add /path/to/your/private/key/id_rsa
perintah akan secara otomatis ditambahkan ke gantungan kunci, dan harus dimuat secara otomatis saat reboot.Berikut ini sudah usang (disimpan untuk referensi).
Untuk kembali ke perilaku sebelumnya, Anda ingin menjalankan
ssh-add -A
perintah (yang secara otomatis memuat semua kunci ssh yang memiliki pass-phrase pada gantungan kunci Anda) ketika Anda masuk. Untuk melakukannya, ikuti langkah-langkah ini:Pertama, tambahkan semua kunci yang ingin Anda muat otomatis ke ssh-agent menggunakan
ssh-add -K /absolute/path/to/your/private/key/id_rsa
perintah. The-K
argumen memastikan bahwa kunci pass-frase ditambahkan ke keychain MacOS ini . Pastikan Anda menggunakan jalur absolut ke tombol. Menggunakan jalur relatif akan membuat skrip yang diluncurkan secara otomatis tidak menemukan kunci Anda.Pastikan semua kunci Anda ditampilkan seperti yang ditambahkan saat Anda mengetik
ssh-add -A
.Buat file bernama
com.yourusername.ssh-add.plist
dalam~/Library/LaunchAgents/
dengan isi di bawah ini. File plist seperti ini digunakanlaunchd
untuk menjalankan skrip saat Anda masuk. [2] [3]Katakan
launchd
untuk memuat berkas plist yang baru saja dibuat dengan mengeksekusi:launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist
.Dan Anda harus siap.
sumber
Ada cara yang lebih sederhana daripada jawaban Ricardo untuk tetap menggunakan kata sandi di antara sesi / restart Mac Anda yang menjalankan 10.12 Sierra.
ssh-add -K ~/.ssh/id_rsa
Catatan: ubah jalur ke tempat kunci id_rsa Anda berada.
ssh-add -A
Buat (atau edit jika ada)
~/.ssh/config
file berikut :Sekarang kata sandi diingat antara restart!
Apple dengan sengaja mengubah perilaku ssh-agent di macOS 10.12 Sierra untuk tidak lagi memuat kunci SSH sebelumnya secara otomatis, seperti yang tercantum dalam OpenRadar , diskusi Twitter , dan Catatan Teknis dari Apple ini . Solusi di atas akan meniru perilaku lama El Capitan dan mengingat kata sandi Anda.
sumber
ssh-add -K
untuk menambahkan kunci SSH saya ke Keychain Apple, apa nama dan tipe entri yang ditampilkan di Keychain Access.app?Catatan: untuk macOS Sierra, silakan merujuk ke jawaban yang lebih baru oleh ChrisJF .
[Jawaban oleh Jeff McCarrell] [2] benar, kecuali bahwa perintah untuk menambahkan frasa sandi berisi en dasbor alih-alih tanda hubung, yaitu
–K
alih-alih-K
, menyebabkan pesan pada efek dari–K: No such file or directory
. Itu harus membaca:sumber
ssh-add -K
illegal option -- K
. Huruf kecil k terdaftar sebagai opsi.-K
yaitu dash-capital-K, masih berlakuSaya menduga Anda tidak menggunakan
ssh
perintah default . Apakah Anda telahssh
menginstal melalui port? Cobalahwhich ssh
untuk melihatssh
perintah mana yang Anda gunakan.Biasanya ia akan menampilkan kotak dialog yang menanyakan kata sandi Anda, jika belum tersimpan di gantungan kunci Anda.
sumber
Saya memiliki masalah yang sama ketika mencoba masuk menggunakan ssh cert klien. Dalam kasus khusus ini untuk mengakses repositori git. Inilah situasinya:
~/.ssh/
~/Library/Keychains/login.keychain
->
server mac remote saya->
git / sshKetika saya terhubung ke remote mac menggunakan remote desktop, saya tidak punya masalah. Namun ketika terhubung dengan SSH ke mac jarak jauh, saya diminta frasa sandi ssh setiap kali. Langkah-langkah berikut ini memecahkannya untuk saya.
security unlock-keychain
Frasa sandi disimpan dalam gantungan kunci masuk. Ini membuka kunci dan memungkinkan ssh-agent untuk mengaksesnya.eval `ssh-agent -s`
Mulai ssh-agent untuk penggunaan shell. Ini akan mendapatkan frasa sandi dari gantungan kunci dan menggunakannya untuk membuka kunci ssh pribadi.eval `ssh-agent -k`
Bunuh ssh-agent yang sedang berjalan.security lock-keychain
Kunci lagi gantungan kunci.sumber
eval \$(ssh-agent)
per Re: remote login dan gantungan kunci . Ketika tidak ada dalam aliaseval $(ssh-agent)
berfungsi ( tanpa backslash $ ).Lihat juga:
... menambahkan catatan ini ketika diminta lebih detail: perintah "keamanan" mampu mengimpor kunci (dan hal-hal lain) langsung ke Gantungan Kunci. Yang menyenangkan adalah bahwa tidak seperti ssh-add, Anda dapat menentukan gantungan kunci. Ini memungkinkan untuk mengimpor langsung ke sistem Keychain ("keamanan manusia" untuk mempelajari caranya)
sumber
Solusi terbaik dan yang dimaksudkan Apple (sejak macOS 10.12.2) dijelaskan di sini
sumber
>>
beresiko jika Anda memasukkan perintah beberapa kali. Lebih baik lakukan edisi manual file, seperti yang dijelaskan oleh jawaban ChrisJF .