Awalnya diposting di Ask Ubuntu
Jika Anda telah mengesampingkan faktor "eksternal", serangkaian langkah berikut biasanya membantu mempersempitnya. Jadi meskipun ini tidak menjawab pertanyaan Anda secara langsung, ini dapat membantu melacak penyebab kesalahan.
Pemecahan masalah sshd
Apa yang menurut saya sangat berguna dalam kasus seperti itu adalah memulai sshd
tanpa membiarkannya melakukan daemonisasi. Masalah dalam kasus saya adalah tidak ada syslog
maupun auth.log
menunjukkan sesuatu yang berarti.
Ketika saya memulainya dari terminal saya mendapat:
# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.
Jauh lebih baik! Pesan kesalahan ini memungkinkan saya untuk melihat apa yang salah dan memperbaikinya. Tak satu pun dari file log berisi keluaran ini.
NB: setidaknya di Ubuntu $(which sshd)
adalah metode terbaik untuk memenuhi sshd
persyaratan jalur absolut. Jika tidak, Anda akan mendapatkan kesalahan berikut:sshd re-exec requires execution with an absolute path
. -p 10222
membuat sshd
mendengarkan pada port alternatif itu, mengesampingkan file konfigurasi - ini agar tidak berbenturan dengan kemungkinan menjalankan sshd
contoh. Pastikan untuk memilih port gratis di sini.
Terakhir:sambungkan ke port alternatif (ssh -p 10222 [email protected]
).
Metode ini telah membantu saya berkali-kali dalam menemukan masalah, baik itu masalah otentikasi atau jenis lainnya. Untuk mendapatkan keluaran yang benar-benar verbose ke stdout
, gunakan $(which sshd) -Ddddp 10222
(perhatikan dd
yang ditambahkan untuk meningkatkan verbositas). Untuk kebaikan debugging lainnya, periksa man sshd
.
Keuntungan utama dari metode ini adalah memungkinkan Anda untuk memeriksa sshd
konfigurasi tanpa harus me-restart sshd
pada port default. Biasanya ini seharusnya tidak mengganggu koneksi SSH yang ada, tetapi saya telah melihatnya. Jadi ini memungkinkan seseorang untuk memvalidasi file konfigurasi sebelum - berpotensi - memotong akses seseorang ke server jarak jauh (misalnya saya memilikinya untuk beberapa VPS dan bahkan untuk server fisik di mana saya perlu membayar ekstra untuk mendapatkan akses out-of-band ke mesin).
Anda juga dapat memiliki host yang memorinya sangat terfragmentasi sehingga tidak dapat mengalokasikan halaman memori yang berdekatan untuk melakukan proses hosting sesi SSH.
Dalam kasus seperti itu, Anda bisa mendapatkan salah satu pesan:
ssh_exchange_identification: read: Connection reset by peer
atau:
Connection closed by aaa.bbb.ccc.ddd
tergantung pada seberapa jauh tuan rumah mencapai sebelum ditebus.
Jika pemecahan memori adalah penyebab yang jelas, solusinya adalah mengakses server melalui cara lain dan me-restart beberapa layanan terkait. Saya telah menemukan Apache dan MySQL sebagai penyebab di VM karena VM tidak memiliki partisi swap. Jika gagal, reboot host.
Untuk berjaga-jaga, karena ini terjadi pada saya. Pastikan Anda menjalankan sshd di host!
Ini adalah kegagalan bodoh, tapi mungkin benar-benar menjadi masalah Anda.