Saya memiliki masalah ini juga ketika mencoba untuk menyebarkan beberapa kode menggunakan Capistrano . Sangat membuat frustrasi. Berikut adalah dua metode yang saya tahu untuk menangani masalah ini.
Metode 1: Tambahkan semua kunci yang dikenal ke agen SSH.
Jadi salah satu solusi yang saya temukan adalah menjalankan ssh-add
dengan -A
opsi — yang menambahkan semua identitas yang dikenal ke agen SSH menggunakan frasa sandi apa pun yang disimpan dalam gantungan kunci Anda — seperti ini:
ssh-add -A
Sekarang ini berfungsi tetapi tidak akan bertahan di seluruh reboot. Jadi, jika Anda tidak ingin khawatir tentang ini lagi, buka saja ~/.bash_profile
file pengguna Anda seperti ini:
nano ~/.bash_profile
Dan tambahkan baris ini ke bawah:
ssh-add -A 2>/dev/null;
Sekarang ketika Anda membuka jendela Terminal baru, semua pasti bagus!
Metode 2: Tambahkan hanya kunci SSH yang ada di gantungan kunci ke agen.
Jadi, sementara ssh-add -A
opsi harus bekerja untuk sebagian besar kasus dasar, saya mengalami masalah baru-baru ini di mana saya memiliki 6-7 kotak Vagrant (yang menggunakan kunci / identitas SSH untuk akses) pengaturan pada mesin di atas yang lebih umum id_rsa.pub
di tempat.
Singkatnya, saya akhirnya dikunci dari server jauh karena terlalu banyak percobaan gagal berdasarkan kunci / identitas SSH karena akses server didasarkan pada kata sandi dan kunci / identitas SSH adalah kunci / identitas SSH. Jadi agen SSH mencoba semua kunci SSH saya, gagal dan saya bahkan tidak bisa masuk ke prompt kata sandi.
Masalahnya adalah bahwa ssh-add -A
hanya akan secara sewenang-wenang menambahkan setiap kunci SSH / identitas tunggal yang Anda miliki ke agen bahkan jika itu tidak perlu dilakukan; seperti dalam kasus kotak Vagrant.
Solusi saya setelah banyak pengujian adalah sebagai berikut.
Pertama, jika Anda memiliki lebih banyak kunci / identitas SSH yang ditambahkan ke agen Anda daripada yang Anda butuhkan — seperti yang diperlihatkan ssh-add -l
kemudian bersihkan semuanya dari agen seperti:
ssh-add -D
Setelah itu selesai, kemudian mulai agen SSH sebagai proses latar belakang seperti:
eval "$(ssh-agent -s)"
Sekarang, ini jadi aneh dan saya tidak terlalu yakin mengapa. Dalam beberapa kasus, Anda dapat secara khusus menambahkan ~/.ssh/id_rsa
kunci / identitas ke agen seperti:
ssh-add ~/.ssh/id_rsa
Ketikkan frasa sandi Anda, tekan Returndan Anda harus baik-baik saja.
Tetapi dalam kasus lain hanya menjalankan ini sudah cukup untuk mendapatkan kunci / identitas ditambahkan:
ssh-add -K
Jika itu berhasil, ketikkan ssh-add -l
dan Anda akan melihat satu kunci SSH / identitas terdaftar.
Semuanya bagus? Sekarang buka .bash_profile
:
nano ~/.bash_profile
Dan tambahkan baris ini ke bawah; komentar atau hapus -A
versi jika Anda memilikinya:
ssh-add -K 2>/dev/null;
Itu akan memungkinkan kunci / identitas SSH untuk dimuat ulang ke agen SSH pada setiap startup / reboot.
PEMBARUAN: Apple sekarang telah menambahkan UseKeychain
opsi ke opsi konfigurasi SSH terbuka dan mempertimbangkan ssh-add -A
solusinya juga.
Pada macOS Sierra 10.12.2, Apple telah menambahkan UseKeychain
opsi konfigurasi untuk konfigurasi SSH. Memeriksa halaman manual (via man ssh_config
) menunjukkan info berikut:
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular 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''.
Yang bermuara pada Apple melihat solusi sebagai menambah ssh-add -A
Anda .bash_profile
seperti yang dijelaskan dalam tiket Radar Terbuka ini atau menambahkan UseKeychain
sebagai salah satu opsi dalam per pengguna ~/.ssh/config
.
$ ssh-add -K
memberi sayassh-add: illegal option -- K