Saya mengubah port SSH default saya di server rumah saya (dalam /etc/ssh/sshd_config
file) ke port 54747, kemudian restart ssh
dan sshd
layanan (tidak pernah yakin yang mana sehingga saya melakukan keduanya hanya untuk aman). Untuk menguji konfigurasi saya, saya logout dan kembali lagi tanpa masalah.
Beberapa hari kemudian, saya menginstal pembaruan apt, dan kemudian reboot server saya. Ketika saya mencoba SSH kembali (pada port 54747), saya mendapat koneksi menolak kesalahan.
Untuk beberapa alasan, saya mencoba SSH pada port default, dan itu berhasil! Saya kembali untuk memeriksa sshd_config, tetapi masih memiliki port khusus. Jadi saya restart ssh
dan sshd
layanan, dan kembali ke perilaku "biasa" (ssh pada port 54747). Saya mencoba me-reboot lagi, dan koneksi menolak lagi ...
Adakah yang tahu apa yang saya lakukan salah?
Detail ekstra:
- Ubuntu 16.04.2 LTS
- Server juga menggunakan HTPC, dengan sesi terbuka (pengguna yang sama dengan SSH) di TV saya
- Saya SSH menggunakan kunci RSA laptop saya, dan telah menonaktifkan kata sandi auth
- Dulu saya reboot dengan
sudo reboot -h now
, tetapi setelah mencari, saya menemukan itu tidak disarankan oleh beberapa orang, jadi saya mencobasudo reboot
, tetapi tidak ada perbedaan
EDIT Urutan acara:
- Ubah port SSH dari 22 menjadi 54747 in
/etc/ssh/sshd_config
- Mulai kembali layanan ssh dan sshd
- Akhiri sesi SSH saat ini
- SSH berhasil kembali pada port 54747
- Mulai ulang
- Kesalahan koneksi SSH pada port 54747, tetapi berhasil pada port 22
- Mulai kembali layanan ssh dan sshd
- SSH berhasil kembali pada port 54747, kesalahan koneksi pada port 22
- Nyalakan kembali dan kembali ke 6
EDIT 1: netstat
output
rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
EDIT 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
EDIT 3: lsof -i | grep ssh
systemd 1 root 46u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd 1 root 49u IPv6 14641 0t0 TCP *:ssh (LISTEN)
sshd 4088 root 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4088 root 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
Sebagai referensi, ATLAS adalah nama host server jarak jauh, 192.168.1.27 adalah IP LAN laptop saya, dan perintah dijalankan antara langkah 6 dan 7
ufw status
Status: inactive
EDIT 4: ps -ef |grep sshd
root 4088 1 0 22:40 ? 00:00:00 sshd: rgo [priv]
rgo 4202 4088 0 22:40 ? 00:00:00 sshd: rgo@pts/1 sshd
sumber
Port 10285
. Google menunjukkan beberapa hasil untuk 54747 ... (3) Juga server SSH dapat bekerja dengan beberapa port secara bersamaan. Buat dua arahan terpisah untuk setiap port:Port 22
danPort 54747
, kemudian buka hanya yang kedua ke firewall. (4) Anda dapat mencobaMatch LocalPort
arahan , ditempatkan di awalsshd_c
.Jawaban:
ssh mungkin "soket diaktifkan" oleh systemd tergantung pada konfigurasi, yang berarti bahwa pada awalnya itu adalah systemd yang mengatur port mendengarkan, dan sshd hanya dimulai ketika klien pertama kali terhubung. Ini untuk mempercepat waktu startup: daemon layanan hanya dimulai atas permintaan.
Namun ini berarti Anda juga harus mengkonfigurasi systemd ke port yang cocok. Anda akan menemukan konfigurasi sistem di
/lib/systemd/system/ssh.socket
mana daftarListenStream=22
. Untuk menimpanya, buat file/etc/systemd/system/ssh.socket.d/port.conf
(buat direktorissh.socket.d
jika perlu) yang berisi:Ubah nomor ke port yang diinginkan. Entri kosong pertama menghapus default sebelumnya, dan entri berikutnya menambahkan yang baru. Ini menimpa default yang dikirimkan
/lib/systemd/system/ssh.socket
dan harus dilakukan selain mengubah/etc/ssh/sshd_config
.Kemudian jalankan
sudo systemctl daemon-reload
untuk memberi tahu systemd tentang perubahan Anda, dansudo systemctl reload ssh
jika daemon ssh Anda sebelumnya berjalan.sumber
/etc/systemd/system/ssh.socket.d/port.conf
diabaikan dan mem-boot ulang masih mengatur ulang port ke 22. Apakah nama file itu relevan? Tidak dapat menemukan dokumentasi yang bagus pada penggantian systemd di Ubuntu ..conf
. Lihat systemd-system.conf (5) untuk detail tentang file konfigurasi systemd override.systemctl status ssh.socket
untuk melihat apakah itu diaktifkan dan apa yang sedang didengarnya.ListenStream=
baris sebelum port khusus mencegahnya, tidak yakin mengapa. Mungkin ini "membersihkan"ListenStream=22
pengaturan di default/lib/systemd/system/ssh.socket
? Cara aneh untuk mengesampingkan pengaturan. Mungkin layak menambahkan ini ke jawabannya?Verifikasi pengaturan port Anda dalam
/etc/ssh/sshd_config
file. Pastikan Anda mengedit sebagai sudo atau pengguna di grup sudo. Yang harus Anda lakukan untuk mengatur port adalah, pada satu jenis barisPort 54747.
Sekarang, restart layanan ssh dengan menjalankanservice sshd restart.
Kemudian verifikasi bahwa ssh mendengarkan pada port itu dengan menjalankansudo netstat -lntp | grep ssh.
Reboot dan uji.Periksa juga pengaturan jaringan Anda. Jika Anda berada di jaringan perusahaan, pastikan Anda berada di vlan yang benar.
sumber
Port 22
baris defaultPort 54747
. Juga, netstat yang Anda berikan kepada saya, tidak memiliki output. Saya menambahkan yang dimodifikasi di OPssh -i key.txt user@ipaddress -p 54747
. Juga periksa apakah ada hal lain yang mendengarkan pada port itu. Lakukansudo lsof -i | grep ssh
. Anda juga dapat memeriksa firewall Anda untuk memastikan tidak memblokir apa pun. Lakukan:sudo ufw status
.shutdown -r now
. Cobalah dan beri tahu kami hasilnya. Lihat artikel ini untuk referensi: askubuntu.com/questions/483670/…sudo reboot -h now
atau `sudo reboot``Terkadang ada yang salah. Jika saya berada di tempat Anda, saya akan mencoba:
sumber
cp
perintah hanya dalam kasus, biasanya proses instalasi ulang tidak menyentuh file konfigurasi.ssh adalah proses klien yang menengahi dan mempertahankan koneksi sesi pengguna ke server ssh. sshd adalah daemon yang berjalan di server ssh untuk mendengarkan dan mengautentikasi permintaan koneksi ssh.
File konfigurasi pada server sshd yang dibaca ketika memulai layanan sshd (yang membutuhkan hak sudo untuk mengedit) adalah
Layanan harus dimulai
Untuk me-restart sshd yang akan melibatkan membaca kembali file sshd_config
Untuk melihat port apa yang didengarkan daemon sshd, serta informasi bermanfaat lainnya, pada jenis server ssh
Lakukan langkah-langkah ini dalam urutan yang ditentukan:
Mulai ulang server ssh
Buka sesi terminal di server ssh (bukan koneksi ssh ke dalamnya)
Tipe
hostname
Jika nama host tidak mengembalikan nama server ssh (Atlas dalam kasus ini) ulangi langkah sebelumnya dengan benar.
grep Port /etc/ssh/sshd_config
- perhatikan nomor port. Seharusnya yang Anda tentukansudo service sshd status
Jika status melaporkan bahwa itu aktif, berjalan dan mendengarkan pada port khusus yang Anda tentukan, maka Anda baik untuk itu. Jika tidak, startup layanan mungkin tidak memanggil file sshd_config yang Anda ubah tetapi file konfigurasi lain yang berisi info default. Jika layanan tidak dimulai (mengatakan mati dan tidak aktif dan berjalan, maka ini adalah masalah yang berbeda dari apa yang Anda tanyakan.
Langkah-langkah ini kemungkinan akan mengidentifikasi akar penyebab masalah yang Anda tanyakan.
Untuk tujuan pengujian dan untuk kesederhanaan: Di sisi klien, dari sesi terminal Anda akan ssh ke server ssh sebagai berikut
Berdasarkan umpan balik OP, saya menduga bahwa sshd tidak memulai bootup tetapi mulai dengan benar ketika secara manual dipanggil. Koneksi ssh yang berhasil melalui port 22 mungkin TIDAK terhubung ke server ssh tetapi ke sesuatu yang lain (misalnya localhost). Untuk membuktikan atau menghilangkan prasangka ini, setelah terhubung melalui tipe ssh
Berdasarkan apa yang dikatakan OP, saya menduga nama host tidak akan menjadi atlas server ssh.
Untuk lebih jauh mengisolasi ini, setelah me-reboot server ssh tetapi sebelum melakukan sesuatu lebih lanjut , dari sesi terminal pada tipe ssh server (Atlas)
Jika ini gagal, sebagaimana mestinya, maka
Jika ini tidak berhasil, itu akan mengkonfirmasi hasil yang diperoleh saat menjalankan
sumber
ssh -p <PORT> <USER>@<IP>
, dengan kunci pribadi saya ditambahkan ke agen.Mungkin Anda baru saja menjawab Y ketika mendeteksi perbedaan antara sshd_config dan paket Anda. Ia bertanya apakah Anda ingin menginstal versi paket mantainer atau menyimpan versi Anda.
sumber
Kemungkinan penyebab yang bisa saya pikirkan
/usr/lib/systemd/system/sshd.socket
rupanya: https://www.vultr.com/docs/how-to-change-ssh-port-on-coreossumber
find /etc/ -iname "*ssh*"
untuk mencari petunjuk lebih lanjut.