Agen SSH kehilangan identitas saat menghidupkan ulang mesin


12

Setelah membuat kunci dengan nama id_rsadi lokasi default itu. Saya menambahkan identitas ke agen SSH dengan perintah ssh-add ~/.ssh/id_rsa, Ini berhasil ditambahkan.

Saya bisa SSH tanpa memasukkan frasa kunci seperti yang sudah ada pada SSH Agent.

Tetapi , ketika saya me-restart mesin atau server dan kemudian memeriksa identitas dengan perintah ssh-add -Lsaya menerima pesan seperti The agent has no identities.

Apakah itu berarti ketika kita menghidupkan ulang mesin, Agen kehilangan identitas? Apakah ini perilaku normal atau ada sesuatu yang saya lewatkan di sini?

Tolong tuntun saya, saya tidak terlalu mengenal SSH.


Lihat utas ini di situs Unix & Linux.
janosdivenyi

Jawaban:


12

Itu normal. Tujuan dari agen kunci adalah hanya untuk menyimpan kunci yang didekripsi dalam memori , tetapi tidak akan pernah menulisnya ke disk. (Itu akan mengalahkan tujuan - mengapa bukan hanya melindungi kunci utama saja?)

Jadi kunci harus dibuka pada setiap login, dan Anda perlu mengotomatiskan ini - menggunakan Linux pam_sshadalah salah satu opsi; secara otomatis menggunakan kata sandi OS Anda untuk membuka kunci agen. Modul serupa lainnya adalah pam_envoy, yang sedikit lebih dapat diandalkan afaik (tetapi membutuhkan systemd).

Kedua modul akan memulai agen itu sendiri dan memuat kunci secara otomatis.


ada ide bagaimana mengotomatisasi terminal mac osx?
Niks

Ketika saya menjalankan perintah $SSH_AUTH_SOCK saya mendapatkan hasil sebagai:: -bash: /tmp/ssh-gT43vE99vk/agent.511Izin ditolak Saya bingung di sini .. cuaca penerusan agen saya bekerja atau tidak .. bisakah Anda memandu?
Niks

Itu tidak dimaksudkan untuk digunakan sebagai perintah - itu adalah variabel , sesuatu yang Anda gunakan sebagai bagian dari perintah lain. Misalnya echo $SSH_AUTH_SOCKuntuk mencetak nilainya.
user1686


2

Cobalah ini ke ~ / .bashrc Anda :

if [ ! -S ~/.ssh/id_rsa ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/id_rsa
  ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/id_rsa

Ini seharusnya hanya meminta kata sandi setelah Anda login.


Terima kasih atas balasan, Itu berarti agen SSH berfungsi dengan baik. Dan setelah menambahkan ini, tidak perlu menambahkan identitas setiap kali memulai mesin? Maaf jika ini pertanyaan konyol tapi saya sangat baru di ssh.
Niks

Jika kunci ssh Anda memiliki kata sandi, itu akan meminta setiap kali Anda masuk.
Shiro

Jawaban ini berbahaya . Jika Anda melakukan apa yang dikatakannya, itu akan menghapus kunci pribadi Anda. Jika Anda tidak memiliki cara lain untuk mengotentikasi, Anda akan kehilangan akses ke sistem di mana Anda telah menggunakan otentikasi kunci publik.
kasperd

2

Pada OS X, ssh-add memiliki bendera khusus untuk terhubung ke Keychain jika Anda memutuskan untuk menyimpan kunci pribadi Anda di sana.

Lari saja ssh-add -K ~/.ssh/id_rsa.

Saya percaya ini menjawab pertanyaan Anda lebih lengkap. Bendera spesifik OS X ini sulit ditemukan, tetapi sudah berfungsi sejak setidaknya OS X Leopard.


2
Ini adalah jawaban yang tepat, diikuti oleh ssh-add -Ayang akan menambahkan semua kunci di Gantungan Kunci. Selain itu, buat juga ~/.ssh/configdan tambahkan UseKeychain yesagar macOS akan selalu menyimpan kunci Anda, seperti dijelaskan di sini: unix.stackexchange.com/questions/140075/…
lucasarruda

MacBook saya masih lupa identitas saya ketika saya reboot, bahkan setelah mencoba ini.
Dominic Sayers

0

Solusi ini berguna jika kunci ssh Anda dilindungi frasa sandi.

Masalah dengan semua jawaban di atas adalah bahwa jika kunci pribadi Anda dilindungi passphrase, setiap kali Anda meluncurkan terminal baru dan mencoba menggunakan kunci pribadi, Anda harus mengetikkan frasa sandi dan Anda akhirnya akan menjalankan beberapa salinan dari ssh-agentin Penyimpanan. Solusinya adalah dengan menambahkan yang berikut ini di Anda ~/.bashrcatau ~/.zshrc:

##### START Fix for ssh-agent #####
# Ref: http://mah.everybody.org/docs/ssh

SSH_ENV="$HOME/.ssh/environment"

function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
     echo succeeded
     chmod 600 "${SSH_ENV}"
     . "${SSH_ENV}" > /dev/null
     /usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     #ps ${SSH_AGENT_PID} doesn't work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
     }
else
     start_agent;
fi
##### END Fix for ssh-agent #####

Ini akan meminta frasa sandi kunci pribadi ssh Anda hanya sekali ketika Anda meluncurkan terminal. Pembukaan sesi terminal baru berikutnya (atau tmux sawions) akan menggunakan kembali ssh-agent yang dibuat oleh snippet di atas.

Referensi

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.