![SSH 연결이 지속적으로 시간 초과되는 문제 해결](https://linux55.com/image/167166/SSH%20%EC%97%B0%EA%B2%B0%EC%9D%B4%20%EC%A7%80%EC%86%8D%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%8B%9C%EA%B0%84%20%EC%B4%88%EA%B3%BC%EB%90%98%EB%8A%94%20%EB%AC%B8%EC%A0%9C%20%ED%95%B4%EA%B2%B0.png)
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