Saya telah menggunakan otentikasi kunci publik pada server jarak jauh untuk beberapa waktu sekarang untuk penggunaan shell jarak jauh serta untuk sshfs mounts. Setelah memaksa umount direktori sshfs saya, saya perhatikan bahwa ssh mulai meminta saya untuk kata sandi. Saya mencoba membersihkan remote .ssh / official_keys dari sembarang menyebutkan mesin lokal, dan saya membersihkan mesin lokal dari referensi ke mesin remote. Saya kemudian mengulangi ssh-copy-id saya, meminta kata sandi, dan kembali dengan normal. Tapi lihat, ketika saya ssh ke server jauh saya masih dimintai kata sandi. Saya agak bingung tentang apa masalahnya, ada saran?
28
~
,~/.ssh
dan~/.ssh/authorized_keys
, jalankanssh -vvv server.example.com
dan laporkan hasilnya (anonimkan nama host dan pengguna jika Anda mau). Jika Anda memiliki akses root di server, lihat entri log yang dibuat ketika Anda mencoba login kunci publik.Jawaban:
sshd menjadi aneh tentang izin pada $ HOME, $ HOME / .ssh (kedua direktori) dan $ HOME / .ssh / official_keys.
Salah satu kotak linux saya berakhir dengan izin drwxrwxrwx pada direktori $ HOME saya. Kotak Arch linux benar-benar tidak akan masuk menggunakan kunci publik sampai saya menghapus izin 'w' untuk grup, lain pada direktori $ HOME saya.
Coba buat $ HOME dan $ HOME / .ssh / punya izin yang lebih ketat untuk grup dan lainnya. Lihat apakah itu tidak memungkinkan sshd melakukan tugasnya.
sumber
ssh-copy-id
seharusnya mengurus izin~/.ssh
dan~/.ssh/authorized_keys
, tetapi juga memastikan bahwa direktori home Anda sendiri tidak dapat ditulis kelompok.chmod g-w homedir
di server jauh bekerja seperti pesona.Diperlukan izin berikut:
.ssh
folder:700 (drwx------)
644 (-rw-r--r--)
600 (-rw-------)
sumber
Saya baru-baru ini mengalami masalah ini juga.
Itu dikoreksi dengan memodifikasi izin
$HOME
direktori. Namun, menjalankanchmod g-w ~/
saja tidak memperbaiki masalah. Selain ituchmod g-w ~/
saya juga perlu memodifikasi izinothers
pada$HOME
direktori dengan menjalankanchmod o-wx ~/
Bersama:
Harap dicatat bahwa saya tidak yakin jika
o-x
perlu, saya hanya menjalankannya sebagai tindakan pencegahan.sumber
Mengubah izin untuk folder ~ / .ssh menyelesaikan masalah saya sesuai dengan posting ini di Super User SE .
sumber
Apakah masalah terjadi juga pada login paralel, yaitu jika Anda mencoba me-mount sshfs saat sesi ssh terbuka? Jika tidak, maka saya kira Anda memiliki direktori rumah Anda terenkripsi? Dalam hal ini
$HOME/.ssh/authorized_keys
hanya akan dapat digunakan pada mesin jarak jauh setelah login pertama Anda (menggunakan kata sandi Anda).Lihat https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Pemecahan masalah untuk penjelasan dan solusi yang diperlukan.
sumber
Saya akan memposting ini sebagai komentar, tetapi mungkin terlalu lama. Saya hanya ingin menambahkan yang
ssh-copy-id
mencoba mengirim kunci publik dari/.ssh
lokasi di dalam$HOME
folder Anda .Jika Anda mencoba melakukan
ssh
root dengan kunci publik (simpan komentar terkait keamanan),ssh-copy-id
bisa mencoba masuk dengan kunci publik yang salah jika$HOME
variabel Anda disetel ke hal lain selain/root
(seperti disetel ke direktori home pengguna normal pengguna Anda) ), sehingga pengguna root akan diminta karena kunci publik root tidak diinstal pada sistem jarak jauh.Anda dapat menggunakan satu-liner berikut untuk menentukan kunci publik yang tepat:
pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
Saya telah mengalami skenario ini di alam liar beberapa kali (termasuk pagi ini) dan berpikir saya akan mencoba untuk memasukkan 2 sen saya, kalau-kalau ada orang menemukan diri mereka dalam situasi yang sama.
sumber
Seperti kontributor lain yang disebutkan, ini mungkin masalah izin.
Cara terbaik mendiagnosis ini adalah me-restart daemon SSH pada server jauh dengan opsi debug on - biasanya opsi "-d". Pesan daemon OpenSSH sangat eksplisit. Misalnya, Anda akan melihat pesan seperti:
sumber
Alasan kunci publik tidak bertahan pasca reboot adalah karena direktori home server saya dienkripsi. (Anda melakukan ini saat menginstal server)
sumber
Masalah lain yang mungkin terjadi adalah server tidak mendukung algoritma kunci Anda. Dalam kasus saya, saya menemukan pesan berikut di
sshd
log saya (/var/log/auth.log
dalam kasus saya):Jika itu masalahnya, Anda harus mengaktifkan dukungan untuk algoritme itu dalam
sshd
konfigurasi Anda (yang mungkin memerlukan pembaruan ke versi yang lebih barusshd
) atau Anda perlu mengalihkan kunci ke algoritma yang didukung olehsshd
Anda mencoba menyambung ke .sumber
Karena pertanyaan ini muncul di antara hasil pencarian pertama saat mencari perilaku ini di Google, saya juga akan menambahkan solusi saya:
Dalam kasus saya itu tidak ada hubungannya dengan izin. Untuk alasan apa pun (tidak repot-repot mencari tahu untuk alasan apa sebenarnya, ketika saya menemukan perbaikan cepat) ketika menjalankan perintah ssh, program tidak mencari file identitas yang tepat. Salah satu solusinya adalah menambahkan secara manual pada server jauh kunci SSH yang coba digunakan oleh program SSH. Anda dapat mengamati apa yang dilakukan program SSH ketika menjalankan perintah dengan menambahkan -v pada perintah:
Kemudian Anda tinggal mengambil di mesin lokal Anda sembarang kunci publik yang untuknya program SSH mencoba menemukan file identitas / kunci privat, pada Mac misalnya:
... dan tambahkan ke file otor_keys remote di:
Lain, dalam kasus saya solusi yang lebih baik adalah menambahkan host kustom di file konfigurasi ssh lokal saya. Di Mac saya itu adalah:
Di sini Anda dapat menambahkan misalnya sesuatu seperti ini:
Maka Anda hanya perlu menjalankan:
... dan Voa
sumber