UnixシステムがリモートSFTPに接続できない理由を解決しようとしています。リモートホストには私の公開鍵があり、私のファイアウォールはそのホストへのアウトバウンド接続を許可するように構成されています。
ホストが動作して使用中であることを確認し、nmap -Pn -p 22 $HOST
次のような結果が得られました。
Host is up.
rDNS record for $HOST
PORT STATE SERVICE
22/tcp filtered ssh
コマンドラインで接続しようとしていますが、毎回接続がタイムアウトします。アウトバウンド接続が進行中であることがわかりますが、応答がありません。
コマンドラインで接続を試みる方法は次のとおりです。
timeout 30 ssh -i ~/.ssh/my_private_key user@$HOST
また、秘密鍵をプレーンテキストファイルにコピー/貼り付けて、次のようにしてみました。
timeout 30 ssh -i ~/.ssh/my_private_key.txt user@$HOST
$ ssh -vvv -i ~/.ssh/my_private_key user@$HOST
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug2: resolving "$HOST" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to $HOST [$HOST] port 22.
debug1: connect to address $HOST port 22: Connection timed out
ssh: connect to host $HOST port 22: Connection timed out
ホストが何かが間違っていると非難する前に、接続の問題を解決するために私がしなければならない他の措置はありますか?
ベストアンサー1
新しいアウトバウンドを許可するようにクライアントを構成する必要がありますが、同じポートに確立された接続へのインバウンドも許可する必要があります。ホストは、そのポートの新しいインバウンド接続と同じポートに確立された接続へのアウトバウンド接続を許可する必要があります。
例:
(これにより、適切なホストへの着信SSH接続が許可されます)
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
(これにより、クライアントへの発信SSH接続が許可されます)
sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT