ssh -A tidak dengan benar mengaktifkan penerusan koneksi agen otentikasi

22

Saya suka ssh -A, yang memungkinkan saya untuk menggunakan kunci ssh lokal saya ketika membuat koneksi dari server jauh. Sebagai contoh, saya ssh -A host1.example.comdan kemudian dari sana saya dapat ssh host2.example.com(atau menggunakan git) dan menggunakan kunci ssh saya dari mesin asli, yang dalam hal ini harus menjadi mac saya. Meskipun ini selalu berhasil untuk saya di Debian / Ubuntu, itu tidak berfungsi pada mac baru saya (Lion).

Apa yang kulewatkan di sini? Bagaimana cara mengkonfigurasi ssh agar bekerja dengan benar dengan -A? Apakah saya memerlukan ssh yang bukan standar MacOS?

rfay
sumber

Jawaban:

33

Sebenarnya, jawaban yang sangat sederhana adalah Anda harus berlari

ssh-add

dan kemudian semuanya bekerja.

Pada dasarnya, macOS sudah memiliki ssh-agent yang diatur untuk Anda, tetapi setelah setiap reboot Anda perlu menambahkan kunci Anda ke sana. ssh-add memberikan akses ssh-agent ke kunci Anda untuk siklus boot saat ini. Anda harus memasukkan kata sandi untuk kunci pribadi Anda jika Anda telah membuatnya.

rfay
sumber
Itu memecahkan masalah penerusan ssh terbaru saya setelah peningkatan ke macOS (setelah 5 tahun, masih merupakan jawaban yang berguna, terima kasih @rfay)
23tux
Ini memang berhasil, tetapi beberapa penjelasan tentang mengapa akan berguna / membantu orang mengingat perintah ini.
Adam Parkin
2
@AdamParkin menambahkan paragraf lain yang menjelaskan.
rfay
1

Konsep di belakang ssh -Aadalah agen ssh. Mereka berjalan di latar belakang dan melalui penggunaan variabel lingkungan agen dapat ditemukan dan secara otomatis digunakan untuk otentikasi ketika masuk ke mesin lain menggunakan ssh. Lihatlah halaman manual ssh-agent untuk lebih jelasnya.

Dengan Mac OS X, ssh-agent harus dimulai sesuai permintaan.

Untuk informasi lebih lanjut, lihat:

Florian Feldhaus
sumber
1

Pada OS X 10.8 Anda perlu melakukan ini sekali:

sudo touch /var/db/useLS

Dan tambahkan ini sebagai bagian dari Anda ~/.bash_profile:

if [ -f ~/.ssh/id_rsa ]; then
    ssh-add -K ~/.ssh/id_rsa 2>/dev/null
fi

Catatan: resep ini adalah bagian dari skrip Badui saya .

Sorin
sumber
Hm, baru saja mencoba ini; agen kemudian mulai, tetapi Anda masih harus ssh-add untuk mendapatkan sesuatu untuk bekerja. Jadi ssh-add sendiri masih jawabannya, sejauh yang saya mengerti. Saya kira saya harus menambahkannya ke .bash_profile saya.
rfay
hahaha, bagaimana jika kunci pribadi saya perlu frasa sandi?
Jeffrey04