Comment SSH sur un port autre que 22

151

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.

Cependant, 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é de permettre au port 26 via OUTPUT de iptablessur 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 je tente de passer de SSH de A à B en utilisant l’IP externe et le port 26:

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.

Versions:

  • A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 mars 2012
  • B = OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1c 10 mai 2012

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é qu'il est /etc/ssh/ssh_config) j'ai décommenté (supprimé le #) la ligne avec Portet changé 22à 26. Il m'a toujours donné le message de connexion refusé. (J'ai redémarré en vain.)

Gary
la source
Avez-vous un SSH en cours d’exécution sur le port 22 ou 26 de la deuxième machine?
Nerdfest
1
Notez que / etc / ssh / ssh_config est la configuration du client ssh. Où / etc / ssh / sshd_config est la configuration du démon ssh.
steakunderscore

Réponses:

45

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.

Éditez /etc/ssh/sshd_configet 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.

Nerdfest
la source
Ahhh ... alors sshd_config doit changer, pas ssh_config?
Gary
2
Correct. sshd est le service (d est pour le démon). Editez le fichier de configuration (avec sudo gedit), puis redémarrez le service avec "sudo service ssh restart".
Nerdfest
2
Résolu le problème. N'a pas eu à changer les paramètres du pare-feu non plus.
Gary
372

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:

  1. Remplacez l'adresse IP du serveur par l'adresse IP ou le nom DNS de votre serveur.
  2. Modifiez votre numéro de port comme vous l'avez défini.
  3. Si vous utilisez le port personnalisé SSH, le même port sera le plus souvent autorisé pour les connexions entrantes et sortantes sur le pare-feu, sinon la connexion ne sera pas établie.
Shiv Singh
la source
17
Celui-ci devrait être marqué comme correct.
Ken_oy
1
Je suis d'accord que c'est la bonne réponse. Celui-ci est simple et va droit au but.
m4l490n
1
@gary Marquer celui-ci comme correct
poésie de chagrin
7
Non, ce n'est pas la bonne réponse. OP avait des problèmes avec le démon n'écoutant pas sur le port souhaité. Il a clairement demandé de l'aide pour la configuration du serveur SSH et / ou NAT, mais la réponse actuelle ignore la publication d'origine et décrit une option de commande client déjà connue de l'OP. Je me demande comment cette réponse a eu tant de votes positifs.
Nnovich-OK
2
Ceci est correct pour la majorité, mais pas pour le problème de OP.
Ultrasonic54321
9

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 sshd externes sont contrôlés par xinetdet s'exécutent en parallèle du processus interne sshd . Dans l'exemple suivant, j'utilise le port 12345:

Vous êtes libre de changer cela en un numéro de port libre 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 "balayage rapide de port" .

La xinetdconfiguration 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.configpeut être une copie de votre sshdconfiguration 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
H.-Dirk Schmitt
la source
7

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
OasisInDesert
la source
cela devrait être un commentaire et non une réponse.
Pablo Pazos
1

Comme je l'ai expliqué dans une réponse , le client ssh permet de spécifier le format d'URI comme 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 avez l'intention d'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é.

Sergiy Kolodyazhnyy
la source
0

Ce n’est pas une bonne idée d’exécuter ssh sur le port par défaut (TCP / 22), ni de le transférer de WAN IP 22 vers le port utilisant ssh-server on LAN IP.

De manière plus générale, la connexion au service ssh-server devrait être à l'écoute sur ce port. Vous devez

  1. Modifier le /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 de hasard au - dessus , comme 42895.
  2. 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

Prime: mosh

Si le paquet mosh est installé sur le serveur, vous utilisez alors

mosh --ssh="ssh -p 42895" serverNameOrIP
Pablo A
la source