ホームサーバーのデフォルトのSSHポートを変更しました(/etc/ssh/sshd_config
内) ファイル)ポート54747に接続し、ssh
を再起動しました およびsshd
サービス(どちらかわからないので、安全のために両方を実行しました)。構成をテストするために、ログアウトしてから問題なく再度ログインしました。
数日後、aptアップデートをインストールしてから、サーバーを再起動しました。 (ポート54747で)SSHで接続しようとすると、接続拒否エラーが発生しました。
何らかの理由で、デフォルトのポートでSSHを実行しようとしましたが、機能しました。 sshd_configを確認するために戻りましたが、それでもカスタムポートがありました。そこで、ssh
を再起動しました およびsshd
サービスを提供し、「通常の」動作に戻りました(ポート54747のssh)。再起動を再試行しましたが、接続が再度拒否されました…
誰かが私が間違ったことを知っていますか?
追加の詳細:
- Ubuntu 16.04.2 LTS
- サーバーはHTPCでも使用されており、テレビでセッションが開いています(SSHと同じユーザー)
- ラップトップのRSAキーを使用してSSHで接続し、パスワード認証を無効にしました
- 以前は
sudo reboot -h now
で再起動していました 、しかし検索したところ、一部の人に落胆していることがわかったので、sudo reboot
を試してみました 、ただし違いはありません
編集
一連のイベント:
-
/etc/ssh/sshd_config
でSSHポートを22から54747に変更します - sshおよびsshdサービスを再起動します
- 現在のSSHセッションを終了する
- ポート54747でSSHに正常に戻る
- 再起動
- ポート54747ではSSH接続エラーが発生しましたが、ポート22では成功しました
- sshおよびsshdサービスを再起動します
- SSHはポート54747で正常に戻り、ポート22で接続エラーが発生しました
- 再起動して6に戻ります
編集1: netstat
出力
[email protected]:~$ sudo netstat -lntp | grep :54747
[email protected]:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
編集2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
編集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)
参考までに、ATLASはリモートサーバーのホスト名、192.168.1.27はラップトップのLAN IP、コマンドは手順6と7の間に実行されました
ufw status
Status: inactive
編集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
承認された回答:
sshは、構成によってはsystemdによって「ソケットアクティブ化」される場合があります。つまり、最初はリスニングポートを設定するのはsystemdであり、sshdはクライアントが最初に接続したときにのみ開始されます。これは起動時間を短縮するためです。サービスデーモンはオンデマンドでのみ起動されます。
関連:Ubuntuで画面を記録する方法は?
ただし、これは、一致するポートに対してsystemdも構成する必要があることを意味します。システム構成は/lib/systemd/system/ssh.socket
にあります。 ListenStream=22
を一覧表示します 。これを上書きするには、ファイル/etc/systemd/system/ssh.socket.d/port.conf
を作成します (ディレクトリssh.socket.d
を作成します 必要に応じて)次のものが含まれます:
[Socket]
ListenStream=
ListenStream=54747
番号を目的のポートに変更します。最初の空白のエントリは前のデフォルトを消去し、次のエントリは新しいデフォルトを追加します。これは、/lib/systemd/system/ssh.socket
で出荷されたデフォルトを上書きします に加えて実行する必要があります /etc/ssh/sshd_config
を変更する 。
次に、sudo systemctl daemon-reload
を実行します systemdに変更を通知し、sudo systemctl reload ssh
sshデーモンが以前に実行されていた場合。