Bagaimana menghindari mengetik ssh-add setiap saat

11

Saya membaca dan mengikuti beberapa dokumentasi online tentang cara mengatur ssh-agent sehingga saya tidak perlu mengetikkan kata sandi setiap kali saya ssh ke mesin jarak jauh.

Namun, dengan bantuan ssh-agent , saya masih perlu melakukan ssh-addsetiap kali saya me-restart shell. The ssh-addkemudian meminta saya untuk memasukkan kata sandi untuk membuka kunci pribadi.

Enter passphrase for key '/home/xx/.ssh/id_rsa':

Alih-alih mengetik kata sandi saya untuk mesin jarak jauh, saya diminta mengetikkan kata sandi untuk kunci pribadi. Ini seperti keluar dari api penyucian dan mendapati diriku di neraka sesudahnya. Sepertinya id_rsa hanya sementara ditambahkan ke ssh-agent dalam suatu sesi , karena setiap kali saya masuk dan mengetik ssh-add -l. Saya mendapat:

The agent has no identities.

Bolehkah saya bertanya bagaimana secara permanen menyimpan kunci (id_rsa) di ssh-agent? Terima kasih

EDIT: inilah yang saya lakukan dengan ssh-agent. Saya menambahkan blok berikut ke dalam~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi
ssgao
sumber
Apakah maksud Anda bahwa Anda harus mengetikkan frasa sandi Anda setiap kali masuk, atau setiap kali membuka jendela shell? Anda mengatakan Anda telah mengikuti beberapa dokumentasi online, tetapi ssh-agent bekerja di luar kotak di Ubuntu, jadi Anda seharusnya tidak melakukan apa-apa. Apa yang kamu lakukan sebenarnya?
Gilles 'SANGAT berhenti menjadi jahat'
Saya harus mengetikkan frasa sandi setiap kali saya ssh ke mesin jarak jauh. TETAPI bukan passphrase untuk mengakses mesin remote, ini adalah passphrase untuk membuka kunci pribadi saya (id_rsa).
ssgao
Saya tahu itu adalah frasa sandi kunci Anda. Yang saya tanyakan adalah apa yang Anda lakukan untuk mengatur ssh-agent, dan apakah berlari ssh-addmemiliki efek yang bertahan lebih lama dari jendela shell yang Anda ketikkan.
Gilles 'SO-stop being evil'
Efeknya bertahan sampai saya keluar dari sistem (lokal). Saya memasukkan apa yang saya lakukan ssh-agentdi pos.
ssgao
Ini terdengar seperti perilaku normal: Anda perlu mengetikkan frasa sandi satu kali per sesi untuk membuka kunci kuncinya. Jika kunci tidak terkunci disimpan di suatu tempat, ini akan mengalahkan tujuan memiliki frasa sandi pada kunci - siapa pun yang memperoleh kunci tidak terkunci yang disimpan dapat menggunakannya. Apakah Anda mengharapkan sesuatu yang lain? Apakah Anda ingin kunci disimpan dalam memori setelah Anda logout sehingga tersedia hingga reboot berikutnya?
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

6

Saya telah menginstal gantungan kunci.

sudo apt-get pasang gantungan kunci

Jika Anda menjalankan bash, Anda perlu menambahkan beberapa perintah ke .bash_profile Anda. Jika Anda tidak memiliki .bash_profile, buat satu di folder home Anda. Tambahkan baris ini:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

Di awal hari kerja saya akan masuk. Ketika saya membuka terminal, saya akan diminta kata sandi saya sekali. Untuk semua terminal dan koneksi baru lainnya, saya tidak akan diminta kata sandi saya lagi.

walpha
sumber
4
apa bedanya dengan mengetik ssh-adddi terminal?
ssgao
ya tapi kemudian kamu harus mengetikkan ssh-add setiap kali ... melakukan ini akan memotong 2 langkahmu -> eval "$ (ssh-agent)" dan ssh-add
abhishek
1

Apa yang Anda cari kurang aman, tetapi dapat dicapai menggunakan otentikasi kunci publik tanpa perlu ssh-agent. Opsi yang lebih aman adalah menggunakan otentikasi kunci publik dengan frasa sandi saat mematikan otentikasi kata sandi pada server ssh, tetapi ini bukan yang Anda minta. Lihat tautan di bagian bawah jawaban ini untuk instruksi jika Anda memutuskan untuk melakukan ini sebagai gantinya.

Untuk menggunakan ssh tanpa diminta frasa sandi apa pun, Anda perlu membuat keypair saat membiarkan bidang kata sandi kosong.

Untuk memeriksa apakah Anda telah membuat keypair, periksa file id_rsa dan id_rsa.pub di direktori ~ / .ssh Anda. Jika sudah ada, Anda dapat menghapusnya atau memindahkannya untuk membuat keypair baru.

Catatan, jika Anda menghapusnya, Anda akan kehilangan akses ke server ssh yang Anda gunakan kemudian kunci lama untuk mengautentikasi jika otentikasi kata sandi dimatikan pada server.

Untuk membuat keypair baru, jalankan perintah berikut:

ssh-keygen -t rsa

Terima lokasi default untuk kunci dan biarkan kata sandi kosong.

Untuk memberikan kunci publik Anda ke server ssh yang ingin Anda sambungkan, gunakan perintah berikut:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

Setelah menyelesaikan langkah-langkah ini, Anda akan dapat masuk ke server jarak jauh tanpa kata sandi dari komputer yang Anda gunakan.

Referensi: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/

Omegamormegil
sumber
0

Beberapa waktu yang lalu, saya tiba-tiba mulai dimintai kata sandi untuk membuka kunci ssh saya ketika melakukannya git push. Ternyata untuk berhenti ditanyai frasa sandi, cukup menambahkan SSH Key Agent (GNOME Keyring: SSH Agent) ke Startup Applications (dalam kasus saya - hanya dengan mencentang kotak centang):

masukkan deskripsi gambar di sini

Alexey
sumber
Bisakah Anda memperluas jawaban Anda dengan lebih detail tentang bagaimana melakukan itu dan mengapa itu akan menyelesaikan masalah yang dimaksud? Terima kasih.
Byte Commander