Mengapa penerusan agen ssh tidak berfungsi?

57

Di komputer saya sendiri, menjalankan MacOSX, saya memilikinya di ~ / .ssh / config

Host *
ForwardAgent yes
Host b1
ForwardAgent yes

b1 adalah mesin virtual yang menjalankan Ubuntu 12.04. Saya ssh untuk itu seperti ini:

ssh pupeno@b1

dan saya masuk tanpa diminta kata sandi karena saya sudah menyalin kunci publik saya. Karena penerusan, saya harus dapat ssh ke pupeno @ b1 dari b1 dan itu akan berfungsi, tanpa meminta saya kata sandi, tetapi tidak. Ia meminta saya kata sandi.

Apa yang saya lewatkan?

Ini adalah output verbose dari ssh kedua:

pupeno@b1:~$ ssh -v pupeno@b1
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to b1 [127.0.1.1] port 22.
debug1: Connection established.
debug1: identity file /home/pupeno/.ssh/id_rsa type -1
debug1: identity file /home/pupeno/.ssh/id_rsa-cert type -1
debug1: identity file /home/pupeno/.ssh/id_dsa type -1
debug1: identity file /home/pupeno/.ssh/id_dsa-cert type -1
debug1: identity file /home/pupeno/.ssh/id_ecdsa type -1
debug1: identity file /home/pupeno/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 35:c0:7f:24:43:06:df:a0:bc:a7:34:4b:da:ff:66:eb
debug1: Host 'b1' is known and matches the ECDSA host key.
debug1: Found key in /home/pupeno/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pupeno/.ssh/id_rsa
debug1: Trying private key: /home/pupeno/.ssh/id_dsa
debug1: Trying private key: /home/pupeno/.ssh/id_ecdsa
debug1: Next authentication method: password
pupeno@b1's password:
pupeno
sumber

Jawaban:

94

Ternyata kunci saya tidak ada di agen, dan ini memperbaikinya:

OS X :

ssh-add -K

Linux / Unix :

ssh-add -k

Anda dapat membuat daftar kunci yang dimuat menggunakan:

ssh-add -l

ssh-add -L # for more detail
pupeno
sumber
5
Catatan yang ssh-add -Kkhusus untuk OS X.
Roger Lipscombe
Apakah Anda harus melakukan ini di setiap reboot?
Krauser
8
  1. Periksa apakah ./ssh/id_rsa .ssh/id_dsa .ssh/id_ecdsafile Anda memiliki izin yang benar yang harus dimiliki oleh pengguna Anda dan di-chmoded 600.

  2. Periksa apakah Anda memiliki kunci publik yang benar pupeno/.ssh/authorized_keyspada b1, dan periksa apakah authorized_keysada jeda baris di akhir kunci.

  3. Periksa apakah Anda menjalankan ssh-agent, coba muat kunci melalui ssh-add

  4. Coba otentikasi dan penerusan berbasis GSSAPI ssh -K

Daniel Prata Almeida
sumber
Izin tombolnya baik-baik saja dan kunci di Authorized_key baik-baik saja (kalau tidak saya pikir saya akan mengalami kesulitan menghubungkan di tempat pertama).
pupeno
Apakah Anda menjalankan ssh-agent? Apa yang terjadi ketika Anda melakukan ssh-add kemudian ssh -A pupeno @ b1 dan kemudian ssh pupeno @ b1?
Daniel Prata Almeida
Mengapa Anda tidak memperbarui jawaban dengan menyebutkan ssh-add -K dan saya akan menerima jawaban Anda alih-alih milik saya (karena informasinya diposting hampir bersamaan).
pupeno
6

Saya punya masalah dengan permintaan siding forwarding agen sshd server karena tidak ada ruang tersisa di / tmp. Ini karena sshd perlu membuat socket di / tmp. Membersihkan disk menyelesaikan masalah saya.

ssh -v berkata saat itu:

debug1: Remote: Agent forwarding disabled: mkdtemp() failed: No space left on device
BartBiczBoży
sumber
1
Saya memiliki masalah yang sama, hanya izin yang salah pada / tmp. TERIMA KASIH!!
nevyn
6

Alasan lain yang mungkin adalah berbagi koneksi: satu mungkin sudah masuk pada host lain tanpa penerusan agen dan berbagi koneksi diaktifkan. Login kedua dengan ssh -A(atau secara ekivalen ditentukan dalam file konfigurasi) melalui koneksi bersama akan mengabaikan -Aflag secara diam-diam . Hanya setelah sepenuhnya keluar atau menonaktifkan berbagi koneksi untuk login kedua, penerusan agen akan bekerja.

W.Mann
sumber
2

Untuk kepentingan para googler lain yang juga sampai pada pertanyaan ini:

Ruang kosong yang salah dalam file ~ / .ssh / config juga dapat menyebabkan beberapa goresan kepala.

Saya baru-baru ini membantu salah satu rekan kerja saya yang memiliki ini:

# incorrect
host foobar ForwardAgent yes

alih-alih ini:

# correct
host foobar
  ForwardAgent yes

Saya juga mengalami contoh di mana lekukan yang hilang dari arahan di bawah daftar host membuat perbedaan untuk fungsionalitas, meskipun itu tidak seharusnya.

Dale Anderson
sumber
0

Tambahkan baris berikut ke file .ssh / config

  Host **Server_Address**
     ForwardAgent yes

Tambahkan kunci ke SSH Agent

 ssh-add -K

Terhubung ke Server Jarak Jauh

ssh -v **username**@**Server_Address**

Jalankan tes koneksi melawan GitHub

ssh -T [email protected]

Jalankan uji jarak jauh terhadap repositori git yang ditargetkan

git ls-remote --heads [email protected]:**account**/**repo**.git
Tahsin Turkoz
sumber