Si je change mon port SSH de 22 à 23453, je ne peux plus me connecter en SSH.
Plus en détail, j'utilise une instance Red Hat EC2 sur Amazon Web Services. C'est le deuxième changement que j'apporte à une nouvelle installation (le premier changement était d'ajouter un utilisateur non-root).
Je peux me connecter en SSH en utilisant Git Bash et un fichier .ssh/config local. Je modifie la ligne dans /etc/ssh/sshd_config qui dit actuellement
#Port 23453
pour dire
Port 23453
puis redémarrer sshd avec
sudo service sshd restart
J'ajoute ensuite une ligne "Port 23453" dans mon fichier .ssh/config
Hôte foo
Nom d'hôte DNS public de mon EC2
Port 23453
Fichier d'identité ma clé ssl
Si j'ouvre un autre shell Git Bash (sans fermer ma connexion existante) et j'essaie de me connecter en SSH sur mon instance (avec ssh foo), je vois l'erreur suivante:
ssh: connect to host mon-DNS-public-EC2 port 23453: Mauvais numéro de fichier
Le groupe de sécurité attaché à cette instance comporte deux entrées, toutes deux en TCP
22 (SSH) 0.0.0.0/0
23453 0.0.0.0/0
Je pense que le port est toujours bloqué par mon pare-feu.
La sortie de sudo iptables -L
est la suivante
Chaîne INPUT (politique ACCEPTER)
cible prot opt source destination
ACCEPTER all -- anywhere anywhere state RELIÉ,ÉTABLI
ACCEPTER icmp -- anywhere anywhere
ACCEPTER all -- anywhere anywhere
ACCEPTER tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJETER all -- anywhere anywhere rejeter-avec interdiction d'hôte icmp
Chaîne FORWARD (politique ACCEPTER)
cible prot opt source destination
REJETER all -- anywhere anywhere rejeter-avec interdiction d'hôte icmp
Chaîne OUTPUT (politique ACCEPTER)
cible prot opt source destination
Cela me semble assez ouvert.
MISE À JOUR
Après avoir ajouté une règle iptables
iptables -A INPUT -p tcp --dport 23453 -j ACCEPT
et en essayant à nouveau, toujours aucun succès.
Sortie de iptables -L
Chaîne INPUT (politique ACCEPTER)
cible prot opt source destination
ACCEPTER all -- anywhere anywhere state RELIÉ,ÉTABLI
ACCEPTER icmp -- anywhere anywhere
ACCEPTER all -- anywhere anywhere
ACCEPTER tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJETER all -- anywhere anywhere rejeter-avec interdiction d'hôte icmp
ACCEPTER tcp -- anywhere anywhere tcp dpt:23453
Chaîne FORWARD (politique ACCEPTER)
cible prot opt source destination
REJETER all -- anywhere anywhere rejeter-avec interdiction d'hôte icmp
Chaîne OUTPUT (politique ACCEPTER)
cible prot opt source destination
Cela semble suffisamment ouvert. Je ne suis pas tout à fait sûr de comment rechercher les paquets entrants ou l'activité sur le port. Mais la sortie de netstat -ntlp
(en tant que root)
Connexions Internet actives (serveurs uniquement)
Proto Recv-Q Send-Q Adresse locale Adresse distante État PID/nom du programme
tcp 0 0 0.0.0.0:56137 0.0.0.0:* ÉCOUTE 948/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* ÉCOUTE 930/rpcbind
tcp 0 0 127.0.0.1:631 0.0.0.0:* ÉCOUTE 1012/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* ÉCOUTE 1224/master
tcp 0 0 0.0.0.0:23453 0.0.0.0:* ÉCOUTE 32638/sshd
tcp 0 0 :::36139 :::* ÉCOUTE 948/rpc.statd
tcp 0 0 :::111 :::* ÉCOUTE 930/rpcbind
tcp 0 0 ::1:631 :::* ÉCOUTE 1012/cupsd
tcp 0 0 :::23453 :::* ÉCOUTE 32638/sshd
Cela semble me montrer sshd sur 23453.
J'ai vérifié de nouveau que l'instance a le port ouvert dans le groupe de sécurité (Port : 23453, Protocole : tcp, Source : 0.0.0.0/0)
Qu'est-ce qui peut causer l'échec de la connexion via SSH ?
Santé
POSTMORTEM
Je peux maintenant me connecter. Il manquait une règle dans iptables. La sortie de iptables -L
ressemble maintenant à ceci:
Chaîne INPUT (politique ACCEPTER)
cible prot opt source destination
ACCEPTER all -- anywhere anywhere state RELIÉ,ÉTABLI
ACCEPTER icmp -- anywhere anywhere
ACCEPTER tcp -- anywhere anywhere tcp dpt:23453 state NEW
ACCEPTER all -- anywhere anywhere
ACCEPTER tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJETER all -- anywhere anywhere rejeter-avec interdiction d'hôte icmp
Chaîne FORWARD (politique ACCEPTER)
cible prot opt source destination
REJETER all -- anywhere anywhere rejeter-avec interdiction d'hôte icmp
Chaîne OUTPUT (politique ACCEPTER)
cible prot opt source destination