Se eu mudar minha porta SSH de 22 para 23453, não será mais possível fazer o ssh.
Mais detalhadamente, estou usando uma instância do Red Hat EC2 no Amazon Web Services. Esta é a segunda alteração em uma nova instalação (a primeira alteração foi adicionar um usuário não root).
Posso fazer ssh usando o Git Bash e um arquivo local .ssh / config, edito a linha em / etc / ssh / sshd_config que atualmente diz
#Port 23453
dizer
Port 23453
depois reinicie o sshd com
sudo service sshd restart
Em seguida, adiciono uma linha "Porta 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 ssh na minha instância (com 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 esta instância possui duas entradas, ambas TCP
22 (SSH) 0.0.0.0/0
23453 0.0.0.0/0
Meu melhor 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 bem aberto para mim.
ATUALIZAR
Depois de adicionar uma regra iptables
iptables -A INPUT -p tcp --dport 23453 -j ACCEPT
e tentando de novo, 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
O que parece suficientemente aberto. Não tenho muita certeza de como procurar pacotes chegando ou atividades 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 no 23453.
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 ausente no iptables. A saída do iptables -L
now é 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
fonte
iptables -L
(o ssh funciona) e o segundoiptables -L
(o ssh está bloqueado). Observe a ordem das regras na cadeia INPUT (as 6 linhas abaixo do primeiro "destino"); elas são lidas de cima para baixo; portanto, no segundo conjunto de regras, "REJECT all" é atingido antes de "ACCEPT tcp" dpt: 23453 ". O terceiro conjunto de regras tem a entrada ACEITAR acima e, portanto, antes, a entrada REJEITAR.Respostas:
O firewall da instância não tem essa porta aberta. Tente o seguinte comando:
Observe que as regras do iptables precisam ser salvas para persistir após uma reinicialização. No RHEL, é isso:
fonte
/sbin/service iptables save
não está funcionando para mim, mesmo com o sudo.Adicionar uma regra iptables
que aceita tráfego de qualquer host, pela porta 23435, e tenta ssh, se vir algum pacote ou atividade, isso significa que os pacotes estão alcançando o servidor.
Se você não vir pacotes, isso significa que o grupo AWS Security não possui regra para permitir sua porta.
mas se você
iptables -nvL
vir tráfego nesta regra (por ), precisará executar "netstat -ntlp" e verificar se o daemon SSH está em execução na porta 2435. e assim por diante0.0.0.0/0
.espero que essas etapas resolvam o problema. se ainda não, então me diga.
fonte
Tem certeza de que o grupo de segurança está definido corretamente? Você clicou em "Aplicar alterações"? Muitas pessoas esquecem de aplicar suas alterações :)
"Número de arquivo inválido" geralmente significa tempos limite de conexão e a configuração do iptables parece correta.
fonte
Caso alguém se depare com esse tópico porque mudou a porta padrão do ssh, aqui está uma solução que funcionou para mim:
/etc/ssh/sshd_conf
.fonte