Kunci publik SSH tidak akan dikirim ke server


33

Saya telah berjuang dengan ini selama beberapa jam sehingga bantuan sangat dihargai ...

Saya memiliki 2x server yang bisa saya gunakan sshdengan kunci publik dari OSX, tidak ada masalah sama sekali di sana jadi saya yakin semuanya baik-baik saja sshd_config.

Saya mencoba mengkonfigurasi tugas cron untuk rsyncmenyinkronkan dua server dan memerlukan server B (cadangan) sshke server A menggunakan kunci publik.

Saya tidak bisa seumur hidup saya mencari tahu mengapa tidak menemukan kunci publik saya - mereka ada di ~/.ssh/(mis. /root/.ssh) Dan semua izin file benar pada A& B.

Ini adalah output:

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug3: no such identity: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

Perhatikan juga sedang mencari kunci pribadi yang tidak ada ...

drwx------. 2 root root 4096 May 25 10:15 .
dr-xr-x---. 4 root root 4096 May 24 18:52 ..
-rw-------. 1 root root  403 May 25 01:37 authorized_keys
-rw-------. 1 root root    0 May 25 01:41 config
-rw-------. 1 root root 1675 May 25 02:35 id_rsa_tm1
-rw-------. 1 root root  405 May 25 02:35 id_rsa_tm1.pub
-rw-------. 1 root root  395 May 25 02:36 known_hosts

2
tolong beri kami hasills -la /root/.ssh/
mreithub

@mreithub Terima kasih atas balasan cepatnya - ditambahkan di atas.
Danny

3
coba hapus _tm1dari nama file kunci Anda (yaitu mv id_rsa_tm1 id_rsadan mv id_rsa_tm1.pub id_rsa.pub)
mreithub

@mreithub Itu berhasil! Terima kasih banyak, namun saya tidak mengerti mengapa saya tidak dapat menambahkan string lain ke nama file. Saya melakukannya di iMac saya untuk terhubung ke server tanpa masalah ... yaitu saya dapat menggunakan id_rsa.tm1.imac.pub tanpa masalah. Bagaimana jika saya ingin beberapa kunci?
Danny

Jawaban:


22

Lihatlah halaman manual ssh Anda:

   -i identity_file
          Selects a file from which the identity (private key) for public
          key authentication is read.  The default is ~/.ssh/identity for
          protocol   version   1,   and  ~/.ssh/id_dsa,  ~/.ssh/id_ecdsa,
          ~/.ssh/id_ed25519 and ~/.ssh/id_rsa  for  protocol  version  2.
          Identity files may also be specified on a per-host basis in the
          configuration file.  It is possible to have multiple -i options
          (and  multiple  identities  specified  in configuration files).

atau halaman manual ssh_config:

   IdentityFile
          Specifies a file from which the user's DSA, ECDSA,  ED25519  or
          RSA   authentication   identity   is   read.   The  default  is
          ~/.ssh/identity for  protocol  version  1,  and  ~/.ssh/id_dsa,
          ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for proto‐
          col version 2.  Additionally, any identities represented by the
          authentication  agent  will  be  used for authentication unless
          IdentitiesOnly is set.

Anda lihat, ada beberapa nama file khusus yang dicoba jika Anda tidak menentukan kunci. Itu juga file yang Anda lihat di output log Anda.

Untuk menggunakan kunci dalam file dengan nama berbeda, Anda memiliki tiga opsi:

  • tentukan file secara eksplisit menggunakan -iopsi di atas .
  • konfigurasikan file di konfigurasi klien Anda menggunakan IdentityFileopsi di atas .
  • tambahkan kunci ke agen Anda menggunakan ssh-add.

Untuk sesi interaktif, agen adalah yang paling fleksibel. Untuk pekerjaan cron Anda, -iopsi mungkin yang paling mudah.


26

File berwenang_kunci salah pada host tujuan adalah alasan lain ssh menampilkan pesan "kami tidak mengirim paket" dan meminta kata sandi alih-alih menggunakan pubkey auth: -

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug2: we did not send a packet, disable method

Masalah dalam kasus khusus ini adalah bahwa data kunci publik, yang telah disisipkan ke .ssh/authorized_keysdalam host tujuan, hilang karakter pertamanya: -

sh-rsa AAAA...

Solusinya adalah dengan menambahkan "s" yang hilang.

ssh-rsa AAAA...

Dan sebagainya:-

debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
...
debug1: Authentication succeeded (publickey).

2
terima kasih, setiap kali saya mendapatkan kesalahan ini karena file otor_keys saya pada remote host (server) rusak. Saya berharap kesalahan tidak membuatnya terdengar seperti ada masalah dengan klien.
tamale

3
Menempel ke vim tanpa menekan 'i' terlebih dahulu!
Jordan Davidson

Bagi saya itu tidak kelihatan cacat tapi saya menghapus file dan dari mesin sumber saya melakukan ssh-copy-id lagi untuk membuatnya kembali. Masalah terpecahkan.
alvarez

14

String pesan kesalahan yang tepat dalam pertanyaan ini juga dapat terjadi dalam kasus pasangan kunci pribadi / publik yang tidak cocok di sisi lokal . Tidak, itu tidak masuk akal, tetapi saya hanya mencabuti rambut saya untuk waktu yang lama mencoba untuk mencari tahu apa yang sedang terjadi.

  • Sistem jarak jauh A telah .ssh/mykey.pubdisalin ke .ssh/authorized_keys.
  • Sistem lokal B memiliki .ssh/mykeykunci pribadi yang benar untuk mencocokkan kunci publik sistem A, tetapi juga memiliki .ssh/mykey.pubfile yang tidak cocok, mungkin versi sebelumnya dari kunci yang diganti.

SSH dari B ke A ( ssh -i mykey A) akan gagal dengan pesan dalam pertanyaan, terutama jika Anda menghidupkan -vvdari klien ssh Anda akan melihat:

Mencoba kunci pribadi: .ssh / mykey
kami tidak mengirim paket, menonaktifkan metode

Ini bohong karena kunci sebenarnya tidak dicoba, ternyata menggunakan file kunci publik lokal dengan nama yang cocok untuk mencari tahu apakah itu mungkin berfungsi dan kemudian tidak benar-benar melakukan apa pun ketika mereka tidak cocok. Tidak ada jumlah informasi debug di kedua sisi yang benar-benar mengisyaratkan masalah.


Wow! Yang ini menghabiskan sedikit waktu untukku juga! Kehilangan rambut! Jadi dalam kasus saya, ini juga, hanya kunci pub saya yang memang ada di file otor_keys sisi klien, kecuali itu memasukkan entri nama @ host di bagian paling akhir, di mana host sshd saya tidak. Saya tidak menyadari bahwa Anda harus mencocokkan otor_keys di setiap akhir, pada kenyataannya, saya tidak berpikir saya pernah mencocokkannya sebelumnya. Ini adalah masalah hanya ketika klien saya adalah CentOS 7, terhubung ke Ubuntu 12.04. Pergi dari MacOS, atau sistem Ubuntu lainnya bekerja dengan baik.
gregthegeek

Jadi bagaimana Anda memperbaiki masalah ini? Anda telah menjelaskan masalah saya ke T. Masalah saya semakin diperburuk karena saya melompat katak antara sejumlah sistem. Sebenarnya menentukan file tidak berfungsi untuk saya
Madivad

@Madivad Anda memperbaiki masalah dengan mencocokkan kunci publik / pribadi secara lokal (atau tidak ada kunci publik sama sekali).
Caleb

@ Caleb Kedengarannya lebih sederhana daripada kecuali (dan saya pikir sen telah turun) ini berarti saya harus menyalin kunci publik dan pribadi ke setiap sistem yang ingin saya gunakan sebagai klien SSH? Saya sudah mencoba membuat IdentityFile, tapi saya jelas salah menggunakannya
Madivad

Menghapus file id_rsa.pub yatim di klien menyelesaikan ini untuk saya. Saya baru saja mengalami masalah ini lagi pada klien Centos 7 baru yang terhubung ke server Ubuntu 12.04. masalah nama @ host_keys resmi tidak memperbaikinya. Saya mencocokkan direktori, perms, file id_rsa kunci yang sama persis, tetapi ada id_rsa.pub tambahan (di sisi klien). Dihapus, sekarang berfungsi. Saya telah menjalankan ssh-keygen untuk membuat direktori dengan cepat, kemudian rsync dari sistem yang dikenal baik. Tapi itu meninggalkan file pub tambahan yang tidak cocok dengan kunci pribadi apa pun (itu bukan pada sumber rsync). Saya menambahkan kembali file pub yang tidak cocok untuk memverifikasi. Pastikan cocok atau dihapus.
gregthegeek

5

Nama file default yang dicari oleh ssh adalah id_rsadan id_rsa.pub.

Jika Anda ingin menggunakan nama file lain, Anda harus menentukannya dalam ssh_config(menggunakan IdentityFilepengaturan) atau melalui parameter baris perintah ssh -i.


4

Saya memiliki masalah yang sama pada RedHat; memeriksa log dan menemukan bahwa direktori home memiliki hak pengguna yang salah.

sshd[2507]: Authentication refused: bad ownership or modes for directory /home/user

Memperbaiki hak dir home menyelesaikan ini.


4
Selamat datang di situs U + L Stack Exchange. Anda dapat membuat jawaban Anda lebih bermanfaat bagi orang lain dengan memberikan contoh seperti apa bentuk izin yang benar.
Erathiel

Saya punya masalah yang sangat mirip kecuali dengan ~/.sshdir. Setidaknya pada Fedora 28 ketika ~/.sshizin adalah 0775, saya tidak bisa terhubung dengan kunci publik / pribadi. Jadi saya mengubah izin menjadi 0755 dan bekerja seperti pesona :)
PovilasB

3

Cara sederhana untuk debug di Debian / Ubuntu adalah: Hubungkan dengan kata sandi dan ikuti log

tail -f /var/log/auth.log

Cobalah untuk terhubung dari terminal lain dan Anda akan melihat kesalahan ...

Dalam kasus saya direktori / root adalah 770 dan bukan 700 yang merupakan default. Kesalahannya adalah "Otentikasi ditolak: kepemilikan buruk atau mode untuk direktori / root"

Perbaiki ini dan Anda selesai.


Terima kasih banyak, sobat! kamu menyelamatkan hariku!
Anthony

Itu membantu memperjelasnya. Milik saya mengatakan Pengguna seperti itu dari 123.123.123.123 tidak diizinkan karena tidak terdaftar di AllowUsers . Terima kasih banyak!
aexl


0

Setelah berlari

ssh-copy-id user@remote-host

biasanya itu harus bekerja. Tetapi jika gagal, coba ini: login ke host jarak jauh sebagai pengguna yang ingin Anda login di masa depan dan jalankan:

ssh-keygen

Itu membantu saya.


0

Jadi yang terjadi pada saya adalah saya memiliki 2 VM untuk diakses dari mesin lokal saya (2 kunci id_rsa.pub dan id_rsa2.pub). Saya menyadari bahwa koneksi ssh saya menggunakan id_rsa.pub secara default untuk koneksi ssh user@xx.xx.xx.xx. Saya memecahkan masalah saya dengan menambahkan file konfigurasi dan menentukan identitas yang akan digunakan untuk setiap host seperti berikut:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2

-2

klien:

vim /etc/ssh/ssh_config

#add your key 
IdentityFile ~/.ssh/yourkey

service sshd restart
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.