Saya harus menjalankan perintah ini sejak memutakhirkan ke macOS:
ssh-add -K
Mengoreksi masalah setelah reboot tetapi saya harus menjalankan perintah ini setiap kali saya masuk ke komputer saya.
Jika saya tidak menjalankan perintah di atas, kunci saya ~/.ssh
dilewati dan saya diminta kata sandi server untuk membuat koneksi.
$ ssh-add -K
memberi sayassh-add: illegal option -- K
-K
. Lihat jawaban @JakeGould untuk resolusi.Jawaban:
Pada macOS Sierra 10.12.2 Apple menambahkan
ssh_config
opsi yang disebutUseKeychain
yang memungkinkan resolusi 'tepat' untuk masalah tersebut. Tambahkan yang berikut ke~/.ssh/config
file Anda :Dari
ssh_config
man
halaman pada 10.12.2:sumber
IdentityFile ~/.ssh/id_rsa
itu berlebihan dan tidak diperlukan (ketika melihat opsi default). Saya tidak pernah mengatur opsi itu di file konfigurasi ssh saya.~/.ssh/config~
lebih disukai karena memecahkan masalah dissh
tingkat. Tidak 100% yakin bahwa.bash_profile
mod akan bekerja untuk klien GUI menggunakan ssh tanpa menggunakan shell.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: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:Dan tambahkan baris ini ke bawah:
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 umumid_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:Setelah itu selesai, kemudian mulai agen SSH sebagai proses latar belakang seperti:
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: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:
Jika itu berhasil, ketikkan
ssh-add -l
dan Anda akan melihat satu kunci SSH / identitas terdaftar.Semuanya bagus? Sekarang buka
.bash_profile
:Dan tambahkan baris ini ke bawah; komentar atau hapus
-A
versi jika Anda memilikinya: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 mempertimbangkanssh-add -A
solusinya juga.Pada macOS Sierra 10.12.2, Apple telah menambahkan
UseKeychain
opsi konfigurasi untuk konfigurasi SSH. Memeriksa halaman manual (viaman ssh_config
) menunjukkan info berikut:Yang bermuara pada Apple melihat solusi sebagai menambah
ssh-add -A
Anda.bash_profile
seperti yang dijelaskan dalam tiket Radar Terbuka ini atau menambahkanUseKeychain
sebagai salah satu opsi dalam per pengguna~/.ssh/config
.sumber
ssh-add -K [path to key]
dan masukkan pw saat diminta. Keychain akan menyimpan kata sandi dan ssh-add akan mendapatkannya dari sana setelah itu.UseKeychain
danAddKeysToAgent
secara otomatis menambahkan kunci Anda dari ssh_config Anda. Tidak diperlukan skrip shell. Lihat @mluisbrown jawaban di bawah ini untuk info terbaru untuk 10.12.2ssh-add -A
skrip rc Anda jika Anda ingin kunci Anda selalu dimuat.”¯\_(ツ)_/¯
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.Saya menambahkan jawaban ini karena:
IdentityFile ~/.ssh/id_rsa
baris, tetapi opsi itu tidak diperlukan untuk autoloading kunci (dan itu benar-benar akan mengikat kunci tertentu untuk bagian host yang Anda tambahkan, yang tidak akan Anda inginkan jika Anda menggunakan kunci berbeda untuk naksir berbeda).UseKeychain
, tetapi itu tidak cukup untuk bertahan kuncissh-agent
setelah reboot.sumber
ssh-add -L
dan itu akan melaporkanThe agent has no identities
. Tidak ada yang akan ada sampai Anda terhubung. TidakAddKeysToAgent
ada tombol antara reboot dengan cara apa pun!Saya telah menulis posting singkat tentang topik ini yang mungkin dapat membantu Anda.
Sebuah solusi memanggil
ssh-add -A
perintah pada setiap startup.Cukup tambahkan
.plist
file dengan konten berikut ke jalur~/Library/LaunchAgents/
atau buat satu dengan aplikasi Lingon :sumber
Karena macOS 10.12.2 Anda dapat menggunakan
UseKeychain
opsi ini. Baca lebih lanjut di sini atau lihatman ssh_config
.Jadi lakukan saja hal berikut:
echo "UseKeychain yes" >> ~/.ssh/config
sumber
>>
beresiko jika Anda memasukkan perintah beberapa kali. Lebih baik lakukan edisi manual file tersebut, seperti dijelaskan oleh jawaban mluisbrown atau jawaban ChrisJF .Saya menemukan bahwa
ssh-add -K
memberi saya " opsi ilegal - K ". Ini karena ssh-add adalah versi aneh yang berasal dari / usr / local / bin (diinstal oleh brew?). Saya dapat menambahkan kunci dengan penggunaan khusus dari ssh-add yang terletak di / usr / bin:sumber
Saya memiliki masalah ini sebelumnya dan saya telah menemukan cara untuk mem-bypass ini. Saya baru saja membuat file bernama
config
di~/.ssh
folder saya , di mana saya telah menambahkan baris berikut:Saya tidak yakin mengapa, tapi
Host
danHostName
keduanya penting. Dalam kasus saya jika salah satu dari mereka tidak ada maka solusinya tidak berhasil.Kemudian, saya hanya melakukan
ssh-add -K
dan itu berfungsi bahkan setelah restart.sumber
Jika Anda menggunakan versi ssh yang berbeda (mis. Diinstal melalui homebrew) solusi di atas tidak akan berfungsi di luar kotak. Misalnya,
AddKeysToAgent yes
danUseKeychain yes
dalam.ssh/config
file tidak dikenali oleh versi ssh non-Apple dan akan menyebabkan kesalahan. Hal yang sama untuk opsi-A
atau-K
untukssh
klien.Itu berarti jawaban @mluisbrown tidak akan berfungsi sama sekali. Anda dapat menggunakan metode 1 dari jawaban @JakeGould dan secara eksplisit menggunakan
ssh-add
utilitas macOS di Anda.bash_profile
untuk menambahkan semua kunci ke gantungan kunci, yaitu:Seperti disebutkan oleh komentar di atas , Anda mungkin harus menambahkan kunci ke gantungan kunci terlebih dahulu: mis
/usr/bin/ssh-add -K .ssh/github
sumber
Mengubah ~ / .ssh / config untuk menambahkan UseKeyChain untuk semua host sudah cukup untuk menghentikan mimpi buruk yang berulang ini;)
Jika file kosong atau tidak ada, buat dan / atau tambahkan konfigurasi di atas dengan mudah.
sumber
Saya memperbarui ke Mac OS X Sierra (10.12.6). Saya bisa ssh ke host lain tetapi tidak ke github.com.
Inilah yang harus saya masukkan ke ~ / .ssh / config:
Setelah perubahan itu, saya bisa menggunakan github seperti sebelumnya.
sumber