Tidak dapat terhubung dengan server. Koneksi ditutup oleh server jauh

1

Saya mencoba ssh server jarak jauh dari server lokal saya. Tetapi setiap kali saya menjalankan perintah ssh:

ssh [email protected]

Saya mendapatkan kesalahan:

Koneksi ditutup oleh xxxx

Output dari ssh -v -v -v -v root @ xxxx adalah:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/mona/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/mona/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048

debug1: identity file /home/mona/.ssh/id_rsa-cert type -1
debug1: identity file /home/mona/.ssh/id_dsa type -1
debug1: identity file /home/mona/.ssh/id_dsa-cert type -1
debug1: identity file /home/mona/.ssh/id_ecdsa type -1
debug1: identity file /home/mona/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "151.236.220.15" from file "/home/mona/.ssh/known_hosts"
debug3: load_hostkeys: loaded 0 keys
debug1: SSH2_MSG_KEXINIT sent
Connection closed by x.x.x.x

Saya telah memuat konten id_rsa.pub saya di kunci known_hosts.

Saya tidak dapat ssh login.

Adakah yang bisa membantu saya dalam hal ini? Akan sangat menghargainya.

Terima kasih.

pengguna1957141
sumber
Itu terlihat seperti tcpwrappers atau firewall yang menutup koneksi.
Drav Sloan
@ DravSloan Bisakah Anda memberi tahu cara mengetahui yang mana yang ditutup dan bagaimana cara menghentikannya? Terima kasih.
user1957141

Jawaban:

4

Mengikuti poin Fred dalam komentar (dan benar-benar membaca pesan kesalahan), saya salah dan ssh sedang terhubung. Saya akan meninggalkan respons asli saya di bagian bawah dan juga menjawab pertanyaan tentang tidak dapat terhubung ke ssh yang sedang berjalan.

Cara lain yang baik untuk mendiagnosis masalah ssh ketika server sshd menolak koneksi, dan jika OP benar tidak ada yang masuk auth.logatau syslog, adalah menjalankannya pada port terpisah dengan mengaktifkan debugging (saya telah memilih port arbitrer 44).

/full/path/to/sshd -p 44 -d 

Anda kemudian dapat terhubung dengan klien ssh Anda dan mendapatkan debug masalah lebih lanjut:

ssh -p 44 [email protected]

Root (seperti yang ditunjukkan Fred dalam jawabannya) adalah pengguna yang berpotensi dibatasi melalui opsi PermitRootLoginopsi ssh di sshd_config. Jenis metode otentikasi yang digunakan oleh Anda juga sshd_configdapat membatasi cara Anda dapat mengakses host:

RSAAuthentication
PubkeyAuthentication
RhostsRSAAuthentication
HostbasedAuthentication
ChallengeResponseAuthentication
PasswordAuthentication
KerberosAuthentication
GSSAPIAuthentication

Lihatlah halaman manual untuk sshd_config ( man 5 sshd_config) untuk informasi lebih lanjut tentang opsi-opsi itu. Biasanya kebanyakan sshds memiliki RSAAuthentication, PubkeyAuthenticationdan terkadang PasswordAuthentication. RSAAuthenticationkhusus untuk Protocol 1dan sebagian besar host menggunakan Protocol 2yang menggunakan PubkeyAuthentication. Keduanya mengandalkan rootmemiliki file kunci (biasanya ditemukan di /root/.ssh/authorized_keys), tetapi lokasi ini dapat ditimpa oleh AuthorizedKeysFileopsi. Sepertinya PasswordAuthenticationtidak diaktifkan di sshd Anda.

Untuk otentikasi RSA dan Pubkey, Anda memerlukan keypair. Yang telah Anda hasilkan dan mereka tinggal di mesin klien Anda di /home/mona/.ssh/id_rsadan /home/mona/.ssh/id_rsa.pub. The publik setengah dari kedua file (kunci yang terkandung dalam /home/mona/.ssh/id_rsa.pub) Anda akan perlu untuk dimasukkan ke dalam root authorized_keyfile yang disebutkan di atas.

Jawaban Asli, merujuk pada kegagalan untuk menghubungkan dari jarak jauh ke proses sshd

Itu terlihat seperti TCPWrappers atau firewall yang menutup koneksi awal.

Periksa file Anda auth.logatau karena ini dapat memberikan beberapa petunjuk yang memblokir koneksi.syslog/var/log

TCPwrappers biasanya diimplementasikan melalui /etc/hosts.allowfile dan pada beberapa unix tambahan atau hanya /etc/hosts.denyfile (yaitu tanpa file hosts.allow).

Entri biasanya berupa:

<service> : <access list> : <allow|deny>

ATAU

<service> : <access list>

tergantung pada jenis bungkus tcp yang digunakan. Format file-file ini biasanya dapat ditemukan dengan halaman manual hosts_access man 5 hosts_access. Anda mungkin harus menambahkan entri untuk memungkinkan akses IP jarak jauh Anda.

sshd : my.ip.address.here : allow

Sebagian besar distribusi dengan kernel Linux cenderung digunakan iptablessebagai firewall utama, meskipun beberapa menggunakan ipchains. (Saya tahu penggunaan FreeBSD ipfwyang porting dari NetBSD). Penyedia layanan Anda mungkin juga memiliki firewall, atau router dengan firewall di depan layanan Anda yang memblokir permintaan ini. Mengenai firewall mana yang digunakan oleh host Anda akan memerlukan penyelidikan.

iptablesaturan firewall dapat dicantumkan melalui iptables -nvLperintah (yang harus dijalankan sebagai root, atau melalui sudo). yang INPUTrantai adalah ruleset digunakan untuk memungkinkan / melarang koneksi masuk host Anda. Anda mungkin harus menambahkan aturan untuk mengizinkan koneksi SSH masuk:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from all hosts"

Anda mungkin ingin membuatnya hanya mengizinkan koneksi dari IP tertentu:

iptables -I INPUT -s 10.10.10.10 -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from the 10.10.10.10 host"

Jika penyedia layanan Anda memblokir port 22, maka Anda mungkin perlu meletakkan layanan di port yang berbeda (port 2222cukup populer) melalui Portopsi di sshd_configfile Anda (yang biasanya tinggal di /etc/ssh).

Drav Sloan
sumber
Hai, saya telah memeriksa log, tidak dapat melihat kesalahan terkait dengan ssh. File hosts.allow dan hosts.deny saya dikomentari. Apa yang harus saya lakukan?
user1957141
Periksa apakah Anda menjalankan sshd? Apakah pgrep sshdmengembalikan sesuatu? Jika kembali apa-apa kemudian mencoba: /etc/init.d/ssh start. Jika pgrep mengembalikan PID, apakah ada firewall yang memblokir koneksi ke sshd?
Drav Sloan
pgrep sshd mengembalikan nomor '895'. Apakah pid ini?
user1957141
Yap itu proses id atau pid. Jadi sshd sedang berjalan. Jadi itu tidak mendengarkan pada port 22, atau firewall atau sejenisnya memblokir koneksi.
Drav Sloan
1
Log tampaknya mengindikasikan bahwa koneksi dapat dibuat: "debug1: Koneksi berhasil." Saya tidak berpikir ini masalah firewall.
Fred
1

Terjadi pada saya juga. Inilah cara saya mendiagnosis dan memperbaiki masalah:

Ketika saya menjalankan sshd pada port yang berbeda (bukan melalui "service ssh" tetapi langsung dari / usr / sbin), saya melihat beberapa peringatan. Ternyata saya mengubah izin semua file di / etc / ssh ke g + w, jadi saya bisa mengeditnya sebagai pengguna lain di grup root. Langkah buruk. sshd sangat khusus tentang ini dan mengabaikan file kunci rsa yang tidak bisa dibaca oleh siapa pun selain root. Saya mengembalikan perubahan izin dan dapat terhubung lagi.

dfl
sumber
0

Hanya untuk memastikan, Anda memiliki #PermitRootLogin yesdengan atau tanpa #file sshd_config Anda? Anda perlu itu untuk ssh in sebagai root. Dan sungguh, saya sarankan tidak mengizinkan root untuk ssh ke server Anda (ubah baris PermitRootLogin nojika belum diatur ke yang sudah). Paksa semua orang untuk masuk sebagai akun normal, lalu su rootjika mereka membutuhkan hak istimewa. Dengan begitu, Anda dapat melihat siapa yang masuk dan menjadi root dan Anda mencegah semua orang tanpa login mencoba menebak kata sandi root Anda.

Kunci publik mesin server harus ada di known_hostsmesin klien untuk mengotentikasi server sehingga Anda tahu Anda tidak terhubung ke beberapa server jahat yang meniru server yang Anda inginkan. Pertama kali Anda ssh ke server, Anda akan diminta untuk menyetujui kunci yang masuk known_hosts. Setelah itu, otentikasi server terjadi secara otomatis.

Anda memasukkan kunci publik akun Anda (dari file .pub) di authorized_keysserver. Kemudian ketika Anda terhubung ke server, klien Anda menyandikan pesan dengan kunci pribadi dan mengirimkannya ke server, yang menggunakan kunci publik yang sesuai dari file otor_key untuk mendekripsi pesan. Jika server dapat melakukannya, itu membuktikan klien memiliki kunci pribadi, dan oleh karena itu berwenang untuk masuk.

Bacaan saya tentang data debug mengatakan bahwa server tidak dapat menemukan kunci publik dari akun Anda. Saya akan pengguna ssh-copy-iduntuk meletakkan kunci publik saya di server.

Fred
sumber
0

Ini bisa menjadi masalah dengan kunci host SSH pada server jarak jauh. Lihat pertanyaan ini dan utas dukungan apel ini (jangan khawatir - ini bukan masalah khusus apel).

Kenster
sumber