しばらく前にセットアップしたUbuntu 10.04サーバーをリモートでセットアップしています。ユーザー名とパスワードを記録している間、私は賢いようで、通常のsshポートを22から...別のものに変更しました。
そのポートが何であるかをどのようにして知ることができますか?
ホスティング会社のバックドアを介してサーバーにアクセスできるので、必要なUnixコマンドをすべて実行できますが、マシンで通常のPuTTYシェルを使用してログインできません。
最初に、構成されているポートを構成ファイルで確認します。
$ Sudo grep Port /etc/ssh/sshd_config
Port 22
次に、ssh
を再起動して、見たばかりの設定が読み込まれることを確認するか、ssh
が実行されているポートを確認します。
$ Sudo netstat -tpln | egrep '(Proto|ssh)'
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 12586/sshd
これは、ポート22で実行されている通常のssh
です。
他の方法でサーバーにアクセスできる場合は、次のコマンドを実行します。
$ Sudo grep Port /etc/ssh/sshd_config
Port NNN
これにより、上記のような行が返されます。ここで、NNN
は選択したポートです。
サーバーへのログインアクセス権がない場合は、nmap
の「バージョンスキャン」機能を使用してSSHポートを見つけることができます。
nmap -sV -p- <insert target's IP here>
-sV
オプションは「バージョンスキャン」を意味し、-p-
は「すべてのポートをスキャンする」ことを意味します。接続が良好で、誰かのファイアウォールまたはIDSを混乱させないことが確かな場合は、-T5
を追加して「できるだけ早くスキャン」することができます。結果は次のようになります。
PORT STATE SERVICE VERSION
1422/tcp open ssh (protocol 2.0)
サーバーのコンソールにアクセスできない場合は、離れたホストからすべてのポートをプローブする必要があります。これらのユーティリティはnmap
に似ていますが、ネットワーク層はホスト(IPアドレス)とポートの特定の組み合わせにトラフィックをリレーする必要があります。
より簡単な方法は、SSHサーバー構成ファイルを調べることです。
➜ ~ Sudo grep Port /etc/ssh/sshd_config
Port 22
lsof
を使用して、プロセスごとのリスニングポートをチェックすることもできます。
Sudo lsof -Pi | grep ssh
または、netstat -lntu
のような他のポートリストコマンド。
$ Sudo netstat -lntp
[Sudo] password for XXX:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2799/sshd
tcp6 0 0 :::22 :::* LISTEN 2799/sshd