Ini adalah pilihan terakhir saya. Saya sudah berusaha mencari tahu masalahnya di sini selama berjam-jam.
Inilah masalahnya: Saya telah menyalin kunci pribadi saya dari mesin # 1 ke mesin # 2. Mesin # 1 dapat terhubung melalui ssh ke server dengan kunci publik saya baik-baik saja, tetapi mesin # 2 memberikan output berikut, ketika mencoba terhubung ke server:
$ ssh -vvv -i /home/kevin/.ssh/kev_rsa [email protected] -p 22312
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312.
debug1: Connection established.
debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
...
Permission denied (publickey).
Jelas ada lebih banyak keluaran debug yang telah saya hilangkan, dan saya dapat memberikan atas permintaan. Namun saya yakin itu tidak suka file kunci pribadi saya.
Saya juga memiliki kecurigaan bahwa itu ada hubungannya dengan bagaimana saya menyalinnya dari mesin # 1 ke mesin # 2. Saya menyalin / menempelkan teks dari kunci pribadi ke flash drive. Ini mungkin menjadi masalah, namun, ketika saya menduplikasi metode ini pada file kunci pribadi lain yang berfungsi, dan melakukan perbedaaan pada yang asli, dengan yang disalin / ditempelkan, mereka identik.
Saya telah berjuang dengan ini. Jika saya bisa mendapatkan sedikit informasi tentang mengapa itu tidak suka kunci saya, saya bisa memperbaikinya saya yakin. ada yang punya ide tentang ini? Apakah ada beberapa meta-data di suatu tempat yang memberitahu ssh bahwa file sebenarnya adalah kunci RSA?
sumber
/var/log/auth.log
di server katakan?Jawaban:
Dalam pengalaman saya dua kesalahan auth berbasis kunci yang paling umum adalah
$HOME/.ssh
direktoriIzin File
OpenSSH melakukan banyak upaya untuk melindungi Anda dari diri Anda sendiri. Cara paling berdampak pengguna ini terjadi adalah dengan memberlakukan pembatasan keras pada siapa yang memiliki akses ke folder ssh lokal Anda. Anda benar-benar hanya menginginkan Anda, dan hanya Anda, untuk mengakses direktori. Yah, dan siapa pun dengan uid = 0, tapi tidak ada jalan keluar yang bagus. Jadi yang perlu Anda lakukan hanyalah mengubah izin Anda:
chmod -R go-rwx ~/.ssh
Ini akan menghapus hak baca, tulis, dan jalankan file apa pun di bawah direktori .ssh dari semua pengguna kecuali pemiliknya, yaitu Anda .Masalah Kunci Resmi
File yang berisi kunci publik Anda, biasanya
$HOME/.ssh/authorized_keys
harus sesuai dengan formulir yang sangat spesifik agar SSH memahami cara menerima kunci pribadi. Setiap kunci harus terdiri dari, setidaknya, 2 bidangSetiap kunci, beserta semua opsi dan bagian komponennya, harus dicantumkan satu per baris dalam file ini. Karena kunci cenderung sangat panjang, mereka akan sering membungkus dan muncul sebagai dua garis pada terminal Anda. Ini kadang-kadang akan menyebabkan malapetaka ketika mencoba untuk menyalin / menempel, karena kadang-kadang satu atau lebih baris baru akan dimasukkan di mana pun kunci membungkus layar Anda. Memperbaiki masalah ini bisa sedikit rumit untuk pemula shell.
Coba jalankan
wc -l ~/.ssh/authorized_keys
Ini akan mencetak jumlah baris dalam file. Bandingkan angka itu dengan jumlah kunci yang Anda harapkan ada dalam file. Jika Anda hanya akan menerima kunci yang satu ini, Anda juga bisa hanya membuat salinan file kunci publik, karena ini adalah format yang sama dengan file kunci resmi Anda. Sesuatu seperti
scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
atau, jika Anda memiliki kunci publik di sistem yang sama yang dapat Anda lakukan
cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys
Selain itu, lihat file log pada host jarak jauh dan lihat apakah ada kesalahan yang dilaporkan di sana. File-file kemungkinan besar akan menjadi
/var/log/secure.log
atau/var/log/auth
.sumber
make a copy of the private key file
harus menjadi kunci publik (seperti yang ditunjukkan dalam contoh Anda)Meskipun, Anda mungkin harus membuat pasangan kunci baru untuk mesin 2 untuk terhubung ke server. Seringkali kunci publik akan mencantumkan nama pengguna dan mesin yang menghasilkannya. Ini harus jelas dalam file otor_keys Anda di server.
sumber
Pesan debug yang Anda berikan berarti bahwa file kunci pribadi dibaca dengan asumsi bahwa itu sebenarnya file kunci publik / host resmi. Ini mungkin bukan kesalahan fatal (saya mendapatkan pesan seperti itu bahkan untuk koneksi yang berfungsi). Apakah itu mengatakan sesuatu tentang "Penawaran" atau "kami mengirim"?
sumber
Coba bandingkan file konfigurasi ssh antara kedua server.
yaitu. sesuatu seperti cat /etc/sshd_config
sumber