SSH 포트를 22에서 23453으로 변경하면 더 이상 ssh in 할 수 없습니다.
더 자세하게는 Amazon Web Services에서 Red Hat EC2 인스턴스를 사용하고 있습니다. 이것은 새로 설치했을 때의 두 번째 변경입니다 (첫 번째 변경은 루트가 아닌 사용자를 추가하는 것이 었습니다).
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를 시도하면 (ssh foo 사용) 다음 오류가 표시됩니다.
ssh: connect to host my-ec2-public-DNS port 23453: Bad file number
이 인스턴스에 연결된 보안 그룹에는 두 가지 항목이 있습니다. 둘 다 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
(루트로) 의 출력
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
다음과 같습니다.
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 works)와 두 번째iptables -L
(ssh가 차단됨) 의 차이점을 볼 수없는 사람 INPUT 체인의 규칙 순서 (첫 번째 "대상"아래의 6 줄)를 위에서 아래로 읽습니다. 따라서 두 번째 규칙 세트에서 "모두 거부"는 "ACCEPT tcp"이전에 적중됩니다. dpt : 23453 ". 세 번째 규칙 세트에는 ACCEPT 항목이 있으며 그 이전에는 REJECT 항목이 있습니다.