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.
linux
ssh
ubuntu-12.04
pengguna1957141
sumber
sumber
Jawaban:
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.log
atausyslog
, adalah menjalankannya pada port terpisah dengan mengaktifkan debugging (saya telah memilih port arbitrer44
).Anda kemudian dapat terhubung dengan klien ssh Anda dan mendapatkan debug masalah lebih lanjut:
Root (seperti yang ditunjukkan Fred dalam jawabannya) adalah pengguna yang berpotensi dibatasi melalui opsi
PermitRootLogin
opsi ssh disshd_config
. Jenis metode otentikasi yang digunakan oleh Anda jugasshd_config
dapat membatasi cara Anda dapat mengakses host:Lihatlah halaman manual untuk sshd_config (
man 5 sshd_config
) untuk informasi lebih lanjut tentang opsi-opsi itu. Biasanya kebanyakan sshds memilikiRSAAuthentication
,PubkeyAuthentication
dan terkadangPasswordAuthentication
.RSAAuthentication
khusus untukProtocol 1
dan sebagian besar host menggunakanProtocol 2
yang menggunakanPubkeyAuthentication
. Keduanya mengandalkanroot
memiliki file kunci (biasanya ditemukan di/root/.ssh/authorized_keys
), tetapi lokasi ini dapat ditimpa olehAuthorizedKeysFile
opsi. SepertinyaPasswordAuthentication
tidak 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_rsa
dan/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 rootauthorized_key
file 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.log
atau karena ini dapat memberikan beberapa petunjuk yang memblokir koneksi.syslog
/var/log
TCPwrappers biasanya diimplementasikan melalui
/etc/hosts.allow
file dan pada beberapa unix tambahan atau hanya/etc/hosts.deny
file (yaitu tanpa file hosts.allow).Entri biasanya berupa:
ATAU
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.Sebagian besar distribusi dengan kernel Linux cenderung digunakan
iptables
sebagai firewall utama, meskipun beberapa menggunakanipchains
. (Saya tahu penggunaan FreeBSDipfw
yang 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.iptables
aturan firewall dapat dicantumkan melaluiiptables -nvL
perintah (yang harus dijalankan sebagai root, atau melalui sudo). yangINPUT
rantai adalah ruleset digunakan untuk memungkinkan / melarang koneksi masuk host Anda. Anda mungkin harus menambahkan aturan untuk mengizinkan koneksi SSH masuk:Anda mungkin ingin membuatnya hanya mengizinkan koneksi dari IP tertentu:
Jika penyedia layanan Anda memblokir port 22, maka Anda mungkin perlu meletakkan layanan di port yang berbeda (port
2222
cukup populer) melaluiPort
opsi disshd_config
file Anda (yang biasanya tinggal di/etc/ssh
).sumber
pgrep sshd
mengembalikan sesuatu? Jika kembali apa-apa kemudian mencoba:/etc/init.d/ssh start
. Jika pgrep mengembalikan PID, apakah ada firewall yang memblokir koneksi ke sshd?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.
sumber
Hanya untuk memastikan, Anda memiliki
#PermitRootLogin yes
dengan 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 barisPermitRootLogin no
jika belum diatur ke yang sudah). Paksa semua orang untuk masuk sebagai akun normal, lalusu root
jika 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_hosts
mesin 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 masukknown_hosts
. Setelah itu, otentikasi server terjadi secara otomatis.Anda memasukkan kunci publik akun Anda (dari file .pub) di
authorized_keys
server. 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-id
untuk meletakkan kunci publik saya di server.sumber
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).
sumber