SSHポートを22から23453に変更すると、sshでログインできなくなります。
詳しくは、Amazon Web ServicesでRed Hat EC2インスタンスを使用しています。これは、フレッシュインストールで行った2番目の変更です(最初の変更は非rootユーザーを追加することでした)。
Git Bashとローカルの.ssh / configファイルを使用してうまくsshできます。/etc/ssh/sshd_configの現在の行を編集します
#Port 23453
言う
Port 23453
次にsshdを再起動します
sudo service sshd restart
次に、.ssh / configファイルに「Port 23453」という行を追加します。
Host foo
Hostname my-ec2-public-DNS
Port 23453
IdentityFile my ssl key
(既存の接続を閉じずに)別のGit Bashシェルを開き、(ssh fooを使用して)インスタンスにSSH接続しようとすると、次のエラーが表示されます。
ssh: connect to host my-ec2-public-DNS port 23453: Bad file number
このインスタンスにアタッチされているセキュリティグループには2つのエントリがあり、どちらもTCP
22 (SSH) 0.0.0.0/0
23453 0.0.0.0/0
私の推測では、ポートはまだファイアウォールによってブロックされています。
の出力sudo iptables -L
は次のとおりです
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
かなりオープンに見えます。
更新
iptablesルールを追加した後
iptables -A INPUT -p tcp --dport 23453 -j ACCEPT
もう一度試してもまだ運がありません。
の出力 iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:23453
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
十分に開いているように見えます。ポートで着信するパケットやアクティビティを探す方法が完全にわかりません。しかしnetstat -ntlp
(rootとして)の出力
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:56137 0.0.0.0:* LISTEN 948/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 930/rpcbind
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1012/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1224/master
tcp 0 0 0.0.0.0:23453 0.0.0.0:* LISTEN 32638/sshd
tcp 0 0 :::36139 :::* LISTEN 948/rpc.statd
tcp 0 0 :::111 :::* LISTEN 930/rpcbind
tcp 0 0 ::1:631 :::* LISTEN 1012/cupsd
tcp 0 0 :::23453 :::* LISTEN 32638/sshd
23453でsshdを表示しているように見えます。
インスタンスのセキュリティグループでポートが開いていることを再度確認しました(ポート:23453、プロトコル:tcp、ソース:0.0.0.0/0)。
SSH経由で接続できなかった原因は他にありますか?
乾杯
ポストモルテム
接続できるようになりました。iptablesには欠けていたルールでした。iptables -L
now の出力は次のようになります。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:23453 state NEW
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables -L
(sshが機能する)と2番目iptables -L
(sshがブロックされている)の違いがわからない人のために。INPUTチェーン内のルールの順序(最初の「ターゲット」の下の6行)を見てください。これらは上から下に読み取られるため、2番目のルールセットでは、「ACCEPT tcp」の前に「REJECT all」がヒットします。 dpt:23453 "。3番目のルールセットには、上記のACCEPTエントリがあり、したがってREJECTエントリの前にあります。