Změnil jsem svůj výchozí port SSH na svém domovském serveru (v /etc/ssh/sshd_config
soubor) na port 54747 a poté restartujte ssh
a sshd
služby (nikdy si nejsem jistý kterou, tak jsem pro jistotu udělal obě). Abych otestoval svou konfiguraci, bez problémů jsem se odhlásil a poté znovu přihlásil.
O pár dní později jsem nainstaloval aktualizace apt a poté restartoval svůj server. Když jsem se pokusil znovu připojit SSH (na portu 54747), zobrazila se chyba odmítnutí připojení.
Z nějakého důvodu jsem zkusil SSH na výchozí port a fungovalo to! Vrátil jsem se ke kontrole sshd_config, ale stále měl vlastní port. Takže jsem restartoval ssh
a sshd
služby a vrátilo se k „normálnímu“ chování (ssh na portu 54747). Pokusil jsem se restartovat znovu a připojení bylo znovu odmítnuto…
Ví někdo, co jsem udělal špatně?
Další podrobnosti:
- Ubuntu 16.04.2 LTS
- Server se také používá jako HTPC s otevřenou relací (stejný uživatel jako SSH) na mé televizi
- Používám SSH klíč RSA svého notebooku a mám vypnuté ověřování hesla
- Kdysi jsem restartoval pomocí
sudo reboot -h now
, ale po hledání jsem zjistil, že to někteří lidé odrazují, a tak jsem zkusilsudo reboot
, ale žádné rozdíly
UPRAVIT
Posloupnost událostí:
- Změňte port SSH z 22 na 54747 v
/etc/ssh/sshd_config
- Restartujte služby ssh a sshd
- Ukončit aktuální relaci SSH
- SSH se úspěšně vrátilo na port 54747
- Restartovat
- Chyba připojení SSH na portu 54747, ale úspěšné na portu 22
- Restartujte služby ssh a sshd
- SSH se úspěšně vrátilo na port 54747, chyba připojení na portu 22
- Restartujte a vraťte se na 6
ÚPRAVA 1: netstat
výstup
[email protected]:~$ sudo netstat -lntp | grep :54747
[email protected]:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
ÚPRAVA 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
ÚPRAVA 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)
Pro informaci, ATLAS je název hostitele vzdáleného serveru, 192.168.1.27 je IP LAN mého notebooku a příkaz byl proveden mezi kroky 6 a 7
ufw status
Status: inactive
ÚPRAVA 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
Přijatá odpověď:
ssh může být „socket aktivován“ systemd v závislosti na konfiguraci, což znamená, že zpočátku je to systemd, kdo nastavuje naslouchací port, a sshd se spustí pouze tehdy, když se klient poprvé připojí. Důvodem je urychlení doby spouštění:servisní démoni se spouštějí pouze na vyžádání.
Související:Jak zaznamenat obrazovku v Ubuntu?
To však znamená, že musíte také nakonfigurovat systemd na odpovídající port. Konfiguraci systému najdete v /lib/systemd/system/ssh.socket
který uvádí ListenStream=22
. Chcete-li to přepsat, vytvořte soubor /etc/systemd/system/ssh.socket.d/port.conf
(vytvořením adresáře ssh.socket.d
v případě potřeby), který obsahuje:
[Socket]
ListenStream=
ListenStream=54747
Změňte číslo na požadovaný port. První prázdná položka vymaže předchozí výchozí hodnotu a následující položka přidá novou. Toto přepíše výchozí nastavení dodávané v /lib/systemd/system/ssh.socket
a musí být provedeno kromě změna /etc/ssh/sshd_config
.
Poté spusťte sudo systemctl daemon-reload
informovat systemd o vašich změnách a sudo systemctl reload ssh
pokud váš démon ssh dříve běžel.