Se eu mudar minha porta SSH de 22 para 23453, não consigo mais ssh in.
Mais detalhadamente, estou usando uma instância do Red Hat EC2 no Amazon Web Services. Esta é a segunda mudança que eu tenho em uma nova instalação (a primeira mudança foi para adicionar um usuário não-root).
Eu posso ssh bem usando o Git Bash e um arquivo local .ssh / config, eu edito a linha em / etc / ssh / sshd_config que atualmente diz
#Port 23453
para dizer
Port 23453
depois reinicie o sshd com
sudo service sshd restart
Eu então adiciono uma linha "Port 23453" meu arquivo .ssh / config
Host foo
Hostname my-ec2-public-DNS
Port 23453
IdentityFile my ssl key
Se eu abrir outro shell do Git Bash (sem fechar minha conexão existente) e tentar fazer o ssh em minha instância (com o ssh foo), vejo o seguinte erro:
ssh: connect to host my-ec2-public-DNS port 23453: Bad file number
O grupo de segurança anexado a essa instância tem duas entradas, ambas TCP
22 (SSH) 0.0.0.0/0
23453 0.0.0.0/0
Meu palpite é que a porta ainda está bloqueada pelo meu firewall.
A saída de sudo iptables -L
é a seguinte
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
O que parece muito aberto para mim.
UPDATE
Depois de adicionar uma regra iptables
iptables -A INPUT -p tcp --dport 23453 -j ACCEPT
e tentando novamente, ainda sem sorte.
Saída de 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
Qual parece suficientemente aberto. Não tenho certeza de como procurar pacotes que entram ou atividade na porta. Mas a saída de netstat -ntlp
(como 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
O que me parece mostrar o sshd em 23453.
Eu verifiquei novamente que a instância tem a porta aberta no grupo de segurança (Porta: 23453, Protocolo: tcp, Fonte: 0.0.0.0/0)
O que mais pode estar causando a falha na conexão via SSH?
Felicidades
POSTMORTEM
Agora posso me conectar. Era uma regra que faltava no iptables. A saída de iptables -L
agora é assim:
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