Server SSH tidak berfungsi (respawn hingga berhenti)

12

Saya memiliki Ubuntu Server 10.04.1 yang berjalan. Ketika saya mencoba masuk ke server melalui ssh, saya tidak bisa. Sebaliknya, saya mendapat connection refusedkesalahan. Saya mencoba melakukan ping ke mesin dan saya mendapat balasan! Jadi, alasan yang jelas adalah bahwa daemon SSH dihentikan.

Setelah reboot, saya bisa masuk ke server saya melalui ssh. Setelah beberapa waktu, saya melihat log saya /var/log/syslogdan menemukan catatan berikut:

Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2465) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2469) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2473) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2477) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2481) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2485) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2489) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2493) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2497) terminated with status 255
Jan 16 10:57:09 myserver init: ssh main process ended, respawning
Jan 16 10:57:09 myserver init: ssh main process (2501) terminated with status 255
Jan 16 10:57:09 myserver init: ssh respawning too fast, stopped

Saya mencari masalah / solusi serupa. Beberapa orang mengatakan bahwa ini disebabkan oleh SSH daemon mencoba untuk memulai sebelum jaringan dan mereka menyarankan untuk perubahan ListenAddressdalam /etc/ssh/sshd_configuntuk menjadi 0.0.0.0. Saya pikir ini bukan penyebab dalam kasus saya, karena masalah saya terjadi setelah sistem aktif dan berjalan.

Adakah yang menyebabkan ini? Ini adalah Server Ubuntu dan harus dijalankan dan diakses dari jarak jauh menggunakan SSH.

MEMPERBARUI:

Berikut cuplikan log yang saya temukan di /var/log/auth.log.

Jan 16 10:56:38 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/vim /etc/ssh/sshd_config
Jan 16 10:57:09 myserver sudo:     user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/etc/init.d/ssh reload
Jan 16 10:57:09 myserver sshd[1465]: Received SIGHUP; restarting.
Jan 16 10:57:09 myserver sshd[2461]: Server listening on 0.0.0.0 port 22.
Jan 16 10:57:09 myserver sshd[2465]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2465]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2469]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2469]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2473]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2473]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2477]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2477]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2481]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2481]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2485]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2485]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2489]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2489]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2493]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2493]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2497]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2497]: fatal: Cannot bind any address.
Jan 16 10:57:09 myserver sshd[2501]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Jan 16 10:57:09 myserver sshd[2501]: fatal: Cannot bind any address.

Tampaknya kesalahan ini mulai muncul setelah saya memuat ulang daemon SSH. Haruskah saya menghindari menggunakan ssh reloaddan menggunakan ssh restartsebagai gantinya?

Khaled
sumber
Juga checkout yang ini. Mungkin ada masalah dengan sshd_config sintaxis bugs.launchpad.net/ubuntu/+source/openssh/+bug/911753

Jawaban:

7

Anda harus memeriksa untuk melihat apa yang terjadi sebelum SSH mulai masuk syslog. Jika subsistem jaringan mati, itu bisa menjelaskan mengapa sshdmulai gagal.

Saya juga akan memeriksa /var/log/auth.log. Ini sshdlog dan mungkin memberi Anda pesan kesalahan yang lebih baik.

Oli
sumber
Terima kasih! Saya menemukan banyak entri dalam auth.logfile dan saya memperbarui pertanyaan saya.
Khaled
reloadharus menjadi tindakan yang valid. Ini harus memicu restart internal (dan tampaknya telah berusaha itu dan hanya terjebak). Coba muat ulang lagi dan lihat apakah macet lagi.
Oli
memang, memuat ulang harus valid, tetapi ada bug. Lihat jawaban saya untuk info lebih lanjut.
SpamapS
16

Saya baru saja mengalami masalah yang sama pada kotak 12,04 saya. Yaitu gejala yang sama. Sayangnya, itu selalu terjadi ketika saya memperkenalkan ListenAddressklausa dengan alamat inetdan inet6di sshd_config. Singkatnya, ini tampaknya merupakan gejala cacat sshd_config- meskipun file log tidak menyatakan hal seperti itu.

Penyelesaian masalah sshd

Apa yang saya temukan secara umum sangat berguna dalam kasus seperti itu adalah memulai sshdtanpa membiarkannya melakukan daemonisasi. Masalah dalam kasus saya adalah keduanya syslogtidak auth.logmenunjukkan 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. File log tidak berisi output ini.

NB: setidaknya pada Ubuntu itu $(which sshd)adalah metode terbaik untuk memenuhi sshdpersyaratan jalur absolut. Jika tidak, Anda akan mendapatkan error berikut: sshd re-exec requires execution with an absolute path. Yang -p 10222membuat sshdmendengarkan port alternatif itu, menimpa file konfigurasi - ini adalah agar tidak berbenturan dengan sshdinstance yang berpotensi berjalan . Pastikan untuk memilih port gratis di sini.

Metode ini telah banyak membantu saya dalam menemukan masalah, baik itu masalah otentikasi atau jenis lainnya. Untuk mendapatkan output yang benar-benar verbose stdout, gunakan $(which sshd) -Ddddp 10222(perhatikan yang ditambahkan dduntuk meningkatkan verbositas). Untuk pemeriksaan debugging goodness lebih lanjut man sshd.


Keuntungan utama metode ini adalah Anda dapat memeriksa sshdkonfigurasi tanpa harus memulai ulang sshdpada port default. Biasanya ini seharusnya tidak mengganggu koneksi SSH yang ada, tapi saya sudah melihatnya. Jadi ini memungkinkan seseorang untuk memvalidasi file konfigurasi sebelum - berpotensi - memotong akses yang ke server jauh (misalnya saya punya itu untuk beberapa VPS dan bahkan untuk server fisik di mana saya perlu membayar ekstra untuk mendapatkan akses out-of-band ke mesin).

0xC0000022L
sumber
3
Trik doa langsung Anda baru saja menyelamatkan bacon saya. Saya mengalami kesalahan pada file sshd_config saya (dihasilkan dari Chef) yang dapat saya pecahkan dengan menggunakan teknik ini. TERIMA KASIH telah meluangkan waktu untuk mempostingnya ke semua orang.
Peter Laird
4

Ini tampaknya merupakan hasil dari bug # 687535, yang diperbaiki baru-baru ini di natty, dan telah diunggah ke maverick dan jernih sebagai pembaruan yang diusulkan.

https://bugs.launchpad.net/ubuntu/lucid/+source/openssh/+bug/687535

Saya mendorong semua orang untuk pergi ke sana, mencoba test case (mencari KASUS UJI), dan memposting hasil Anda sebelum dan setelah menginstal perbaikan yang diusulkan. Itu akan membantu tim SRU memutuskan bahwa verifikasi telah dilakukan dan merilisnya sebagai pembaruan.

SpamapS
sumber
2

Dalam /etc/ssh/sshd_config, pastikan bahwa semua opsi ya dan tidak ada dalam huruf kecil. Misalnya, jika Anda mengatur PermitRootLogin No,, ssh tidak akan memulai. Sebenarnya harus PermitRootLogin no.

Mengalir
sumber
1

Saya memiliki masalah serupa dengan gambar Ubuntu 11.10 pada Linode setelah memulai ulang. Layanan ssh akan dihasilkan di syslog:

Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3419) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh main process ended, respawning
Mar 18 06:31:33 servername kernel: init: ssh main process (3422) terminated with status 255
Mar 18 06:31:33 servername kernel: init: ssh respawning too fast, stopped

Ini adalah kotak uji, dan waktu kerjanya sekitar 60 hari, jadi di suatu tempat di sepanjang jalan, saya menginstal sesuatu yang ditambahkan ke bagian bawah sshd_config:

ClientAliveInterval 60
ClientCountAliveMax 60

Mengomentari baris-baris itu memungkinkan ssh untuk memulai.

joe
sumber
0

Ubuntu ssh tidak akan memulai dan syslog menghasilkan "init: ssh proses utama (2044) diakhiri dengan status 255"

/ usr / sbin / sshd -Ddp 10222

Tentu berhasil bagi saya untuk menentukan kesalahan baris sshd_config

pengguna652460
sumber
-1

punya masalah yang sama, solusi atas tidak berfungsi, tapi saya punya solusi untuk ini.

root@imt:~# sshd
sshd re-exec requires execution with an absolute path
ssh localhost
ssh: connect to host localhost port 22: Network is unreachable

Path tidak apa-apa sesuai dokumen, jadi saya jalankan secara manual sshd.

root@imt:~# /usr/sbin/sshd 
/var/run/sshd must be owned by root and not group or world-writable

/ var / run / sshd adalah.

root@imt:~# ls -ld /var/run/sshd
drwsrwsrwt 2 root root 40 Jan  5 12:58 /var/run/sshd

root@imt:~# chmod 755 /var/run/sshd

maka itu baik-baik saja. jalankan ssh localhost dan periksa.

root@imt:~# ssh localhost 
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 64:93:fd:ab:4c:f9:7b:8a:86:60:22:f7:56:fa:ea:cc.
Are you sure you want to continue connecting (yes/no)? yes
Vicky Dhindsa
sumber
1
Meskipun ini adalah panduan yang sangat membantu, itu jelas bukan yang menyebabkan OP sshdtidak berjalan dengan benar, seperti yang Anda lihat dari pesan kesalahan yang sangat berbeda di log mereka. -1
David Foerster