J'ai deux ordinateurs derrière le même routeur. Appelons-les A et B.
A peut SSH to B de la manière suivante: ssh usr@<internal ip of computer>
B peut relier SSH à A en faisant la même chose, mais l’IP externe doit être utilisée. J'ai transféré le port 22 de mon routeur à l'adresse IP de l'ordinateur A, de sorte que tout me semble logique.
Toutefois, je souhaite également transférer le port 26 vers l'ordinateur B et SSH de l'extérieur du réseau en utilisant l'adresse IP externe pour les deux, mais en spécifiant le port 22 ou 26 pour sélectionner efficacement l'ordinateur à utiliser.
J'ai essayé d'autoriser le port 26 via OUTPUT de iptables
sur A et INPUT de B, mais cela ne semblait pas fonctionner. J'ai également transmis le port 26 à l'adresse IP interne de B (via le routeur), comme je l'ai fait avec 22 pour A.
Voici ce que je reçois lorsque j'essaie de passer de SSH de A à B en utilisant l'adresse IP externe et le port 26:
ssh: connect to Host xx.xx.xxx.xx port 26: Connection refused.
Versions:
A a 12.04 Ubuntu, B est un Raspberry Pi avec Raspbian.
EDIT: Quelque chose que j'ai oublié de mettre dans: j'ai essayé de changer le fichier de configuration SSH (j'ai trouvé que c'est /etc/ssh/ssh_config
) J'ai annulé le commentaire (supprimé le #
) la ligne avec Port
et changé 22
en 26
. Il m'a toujours donné le message de connexion refusé. (J'ai redémarré en vain.)
Il semble que vous n'utilisiez pas SSH sur le port 26 de la deuxième machine. Vous pouvez soit changer le numéro de port de cette machine en 26.
Editez /etc/ssh/sshd_config
& n'oubliez pas de redémarrer SSH ou laissez-le sur 22, mais transmettez le port 26 du routeur au port 22 de la deuxième machine. En outre, n'oubliez pas de modifier les paramètres de pare-feu sur le second ordinateur pour permettre les connexions.
Si vous utilisez un système Linux et que vous souhaitez vous connecter à un serveur SSH sur le port 26, vous pouvez utiliser la commande suivante.
ssh [email protected] -p 26
Remarque:
J'utilise le port 22 uniquement pour l'accès intranet ssh.
Pour un accès via Internet, j'utilise un port personnalisé (inhabituel). Cela a pour avantage de réduire la charge générée par les enfants de script qui analysent le port 22 à la recherche de "noms d'utilisateur bien connus".
Les processus external sshd sont contrôlés par xinetd
et s'exécutent en parallèle avec le processus internalsshd
. Dans l'exemple suivant, j'utilise le port 12345:
Vous êtes libre de changer cela en n'importe quel numéro de port disponible sur votre système. Peut-être qu'une valeur plus élevée rendra également un peu plus improbable que ce port soit analysé par un "analyse rapide du port".
La configuration de xinetd
est:
service ssh-external
{
socket_type = stream
wait = no
protocol = tcp
type = UNLISTED
user = root
server = /usr/sbin/sshd
server_args = -i -f /etc/ssh/external-sshd.config
port = 12345
log_on_failure += USERID
}
Le fichier /etc/ssh/external-ssdh.config
peut être une copie de votre configuration sshd
habituelle. Assurez-vous que les instructions suivantes sont configurées:
Port 12345
AddressFamily inet
Je suggère également d'appliquer l'authentification par clé publique et de désactiver l'authentification par mot de passe pour l'accès Internet:
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
Les ports d'écoute peuvent également être liés durement aux adresses IP
/ etc/ssh/sshd_config:
ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444
Comme je l'ai expliqué dans un réponse associée , le client ssh permet de spécifier le format d'URI sous la forme ssh://user@Host:1234
. Par exemple:
ssh ssh://[email protected]:2222
où 2222 est le numéro de port. Remplacez le numéro de port que vous souhaitez utiliser à la place. Bien sûr, rappelez-vous que pour se connecter au port spécifié, le serveur ssh (sur l'hôte auquel vous essayez de vous connecter) doit d'abord écouter sur le port spécifié.
Ce n’est pas une bonne idée d’exécuter ssh sur le port par défaut (TCP/22), ni de transférer de WAN IP 22 vers le port utilisant ssh-server on LAN IP.
De manière plus générale, se connecter au service ssh-server devrait être à l'écoute sur ce port. Vous devez
/etc/ssh/sshd_config
(notez le d ) de #Port 22
à Port 26
. C'est-à-dire, commentez et changez le port. Peut-être que mieux que 26 serait quelque chose au-dessus de façon aléatoire , comme 42895.Redémarrez le service ssh-server
Sudo systemctl restart sshd.service
Ensuite, à partir de ssh-client, vous pourrez vous connecter
ssh user@serverNameOrIP -p 42895
mosh
Si le paquet mosh est installé sur le serveur, vous utilisez alors
mosh --ssh="ssh -p 42895" serverNameOrIP