ホームサーバーのデフォルトのSSHポート(/etc/ssh/sshd_config
ファイル内)をポート54747に変更し、ssh
サービスとsshd
サービスを再起動しました(どちらかを確認して安全のために両方を行いました)。構成をテストするために、ログアウトしてから問題なく再度ログインしました。
数日後、適切な更新プログラムをインストールし、サーバーを再起動しました。 (ポート54747で)SSHに戻そうとしたときに、接続拒否エラーが発生しました。
何らかの理由で、デフォルトのポートでSSHを試してみましたが、うまくいきました!私は戻ってsshd_configを確認しましたが、まだカスタムポートがありました。そこで、ssh
およびsshd
servicesを再起動すると、「通常の」動作(ポート54747のSSH)に戻りました。再起動を試みましたが、接続が再び拒否されました...
誰が私が間違ったことを知っていますか?
追加の詳細:
Sudo reboot -h now
を使用して再起動していましたが、検索した後、一部の人が推奨しないことを発見したので、Sudo reboot
を試しましたが、違いはありませんでしたEDITイベントのシーケンス:
/etc/ssh/sshd_config
でSSHポートを22から54747に変更します編集1:netstat
出力
rgo@ATLAS:~$ Sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ 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: rgo@pts/1 sshd
sshは、設定に応じてsystemdによって「ソケットがアクティブ化」される場合があります。つまり、最初はリスニングポートを設定するのはsystemdであり、sshdはクライアントが最初に接続したときにのみ開始されます。これは、起動時間を短縮するためです。サービスデーモンはオンデマンドでのみ起動されます。
ただし、これは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に変更を通知し、sshデーモンが以前に実行されていた場合はSudo systemctl reload ssh
を実行します。
sshは、sshサーバーへのユーザーセッション接続を調停および維持するクライアントプロセスです。 sshdは、ssh接続要求をリッスンして認証するためにsshサーバーで実行されるデーモンです。
Sshdサービスの開始時に読み取られるsshdサーバー上の構成ファイル(編集するにはSudo特権が必要)
/etc/ssh/sshd_config
サービスはから開始する必要があります
/etc/systemd/system/sshd.service
Sshd_configファイルの再読み取りを伴うsshdを再起動するには
Sudo service sshd restart
Sshdデーモンがリッスンしているポート、およびその他の役立つ情報をsshサーバータイプで確認するには
Sudo service sshd status
指定された順序でこれらの手順を実行します。
Sshサーバーを再起動します
ターミナルセッションを開きますsshサーバー上(ssh接続ではない)
タイプhostname
ホスト名がsshサーバーの名前(この場合はAtlas)を返さない場合は、前の手順を正しくやり直してください。
grep Port /etc/ssh/sshd_config
-ポート番号を書き留めます。指定したものでなければなりません
Sudo service sshd status
指定したカスタムポートでアクティブで実行中でありリスニングしていることをステータスが報告する場合、その目的は十分です。そうでない場合、サービスの起動は、変更したsshd_configファイルではなく、デフォルト情報を含む別の構成ファイルを呼び出している可能性があります。サービスが開始しなかった場合(死んでアクティブで実行されていないと言う場合)、これはあなたが尋ねたものとは異なる問題です。
これらの手順は、おそらくあなたが尋ねている問題の根本原因を特定するでしょう。
テスト目的および単純化のため:クライアント側では、ターミナルセッションから次のようにsshサーバーにsshします。
ssh -l username -p 54747 hostname
OPのフィードバックに基づいて、sshdは起動時に起動するのではなく、手動で起動したときに正しく起動すると思われます。ポート22を介したssh接続の成功は、sshサーバーへの接続ではなく、他の何か(たとえばlocalhost)への接続である可能性があります。 sshタイプを介して接続した後、これを証明または否定するため
hostname
OPが言っていることに基づいて、ホスト名はsshサーバーのアトラスではないと推測しています。
これをさらに分離するには、sshサーバーを再起動した後、さらに何かを行う前に、sshサーバーのターミナルセッションから(アトラス)タイプ
ssh localhost
これが失敗する場合は、そうする必要があります。
ssh -p 54747 localhost
これが機能しない場合は、実行時に得られた結果を確認します
Sudo service sshd status
考えられる原因
/usr/lib/systemd/system/sshd.socket
経由でポートを変更する別の方法があるようです: https://www.vultr.com/docs/how-to- change-ssh-port-on-coreos/etc/ssh/sshd_config
ファイルのポート設定を確認します。 SudoまたはSudoグループのユーザーとして編集していることを確認してください。ポートを設定するために必要なことは、1行でPort 54747.
を実行することです。次に、service sshd restart.
を実行してsshサービスを再起動し、Sudo netstat -lntp | grep ssh.
Rebootを実行してそしてテスト。
ネットワーク設定も確認してください。企業ネットワーク上にいる場合は、正しいVLANにいることを確認してください。
時々物事がうまくいかないことがあります。私があなたの場所にいた場合、私は試してみます:
cp /etc/ssh/sshd_config $HOME
Sudo apt-get --reinstall install openssh-server
おそらく、aptがsshd_configとパッケージの違いを検出したときにYと答えただけでしょう。パッケージ管理者のバージョンをインストールするか、保持するかを尋ねられます。