Saya mengubah port SSH default saya di server rumah saya (di /etc/ssh/sshd_config
file) ke port 54747, lalu restart ssh
dan sshd
layanan (tidak pernah yakin yang mana jadi saya melakukan keduanya hanya untuk aman). Untuk menguji konfigurasi saya, saya keluar dan masuk kembali tanpa masalah.
Beberapa hari kemudian, saya menginstal pembaruan apt, dan kemudian me-reboot server saya. Ketika saya mencoba masuk kembali SSH (pada port 54747), saya mendapatkan kesalahan koneksi ditolak.
Untuk beberapa alasan, saya mencoba SSH pada port default, dan berhasil! Saya kembali untuk memeriksa sshd_config, tetapi masih memiliki port khusus. Jadi saya memulai kembali ssh
dan sshd
services, dan kembali ke perilaku "biasa" (ssh pada port 54747). Saya mencoba me-reboot lagi, dan koneksi ditolak lagi…
Adakah yang tahu apa yang saya lakukan salah?
Detail tambahan :
- 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 otentikasi kata sandi
- Dulu saya reboot dengan
sudo reboot -h now
, tetapi setelah mencari, saya menemukan itu tidak disukai oleh beberapa orang, jadi saya mencobasudo reboot
, tapi tidak ada perbedaan
EDIT
Urutan acara :
- Ubah port SSH dari 22 menjadi 54747 di
/etc/ssh/sshd_config
- Mulai ulang layanan ssh dan sshd
- Akhiri sesi SSH saat ini
- SSH berhasil masuk kembali pada port 54747
- Mulai ulang
- Sambungan SSH error pada port 54747, namun berhasil pada port 22
- Mulai ulang layanan ssh dan sshd
- SSH berhasil masuk kembali pada port 54747, kesalahan koneksi pada port 22
- Mulai ulang dan kembali ke 6
EDIT 1 : netstat
keluaran
[email protected]:~$ sudo netstat -lntp | grep :54747
[email protected]:~$ 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: [email protected]/1 sshd
Jawaban yang Diterima:
ssh mungkin "socket diaktifkan" oleh systemd tergantung pada konfigurasi, yang berarti bahwa awalnya systemd yang mengatur port mendengarkan, dan sshd hanya dimulai ketika klien pertama kali terhubung. Ini untuk mempercepat waktu mulai:daemon layanan hanya dimulai sesuai permintaan.
Terkait:Bagaimana Cara Merekam Layar di Ubuntu?
Namun ini berarti Anda juga harus mengonfigurasi systemd ke port yang cocok. Anda akan menemukan konfigurasi sistem di /lib/systemd/system/ssh.socket
yang mencantumkan ListenStream=22
. Untuk menimpanya, buat file /etc/systemd/system/ssh.socket.d/port.conf
(membuat direktori ssh.socket.d
jika diperlukan) yang berisi:
[Socket]
ListenStream=
ListenStream=54747
Ubah nomor ke port yang diinginkan. Entri kosong pertama menghapus default sebelumnya, dan entri berikutnya menambahkan yang baru. Ini mengesampingkan default yang dikirimkan dalam /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, dan sudo systemctl reload ssh
jika daemon ssh Anda sebelumnya berjalan.