Comment changer le port sshd sur Mac OS X?

Je souhaite changer le port sshd utilisé sur un serveur Mac. Par exemple, disons du port 22 au port 32.

L'édition /etc/sshd_config ne semble pas fonctionner. Est-ce que quelqu'un sait comment le changer? Je préférerais une méthode compatible avec toutes les versions OSX (ou autant que possible, au moins).

4 Solutions collect form web for “Comment changer le port sshd sur Mac OS X?”

Toute réponse précédente fonctionne (comme le suggère Google aussi), mais elles sont sales et peu élégantes .

La bonne façon de changer le port d'écoute pour un service traité lancé sur Mac OS X est de rendre disponibles les modifications des clés dédiées dans ssh.plist

Donc, la solution est aussi simple que d'utiliser le numéro de port au lieu du nom du service.

Un extrait de mon édité /System/Library/LaunchDaemons/ssh.plist :

  <key>Sockets</key> <dict> <key>Listeners</key> <dict> <key>SockServiceName</key> <string>22022</string> <key>SockFamily</key> <string>IPv4</string> <key>Bonjour</key> <array> <string>22022</string> </array> </dict> </dict> 

Remarque: pour pouvoir éditer ce fichier sur El Capitan, Sierra et probablement dans des versions futures, vous devez désactiver SIP (System Integrity Protection). Voir Comment désactiver la protection de l'intégrité du système (SIP) […] .

L'édition ci-dessus obligera également sshd à écouter uniquement sur IPV4.

Après avoir apporté des modifications à ssh.plist , le fichier doit être rechargé comme suit:

 sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist sudo launchctl load /System/Library/LaunchDaemons/ssh.plist 

Notez que l'utilisation de launchctl stop ... et launchctl start ... NE PAS recharger ce fichier.

La page man avec plus d'informations peut être trouvée en tapant man launchd.plist ou en utilisant ce lien .

Si vous souhaitez que sshd écoute sur un port supplémentaire, vous pouvez ajouter plusieurs entrées au dictionnaire Sockets.

Exemple:

 <key>Sockets</key> <dict> <key>Listeners</key> <dict> <key>SockServiceName</key> <string>ssh</string> <key>Bonjour</key> <array> <string>ssh</string> <string>sftp-ssh</string> </array> </dict> <key>Listeners2</key> <dict> <key>SockServiceName</key> <string>22022</string> </dict> </dict> 

D'après ce que j'ai lu (et expérimenté) jusqu'à présent, il existe trois méthodes principales qui peuvent être utilisées:

  1. Modifiez le paramètre dans le fichier ssh.plist;
  2. Modifiez le paramètre dans le fichier / etc / services;
  3. Modifiez le paramètre dans le fichier /etc/sshd.conf.

Une autre façon de le faire, que je préfère personnellement à tous et à chacune de ces méthodes, car il évite de déranger les fichiers système Mac OS X utilise socat pour rediriger le port 22 vers le port que vous voulez.

  1. Télécharger socat: http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
  2. Déplacez le fichier tar.gz dans votre répertoire / usr / local / ( sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz )
  3. Accédez à votre répertoire / usr / local / bin ( cd /usr/local/bin )
  4. Décompressez: sudo tar -xvzf socat-1.7.3.2.tar.gz
  5. Déplacez-vous vers le répertoire des fichiers non compressé: cd ./socat-1.7.3.2
  6. Exécutez la configuration, la fabrication et l'installation habituelles pour installer socat ( sudo ./configure && sudo make && sudo make install )
  7. Redirection du port 22 (par défaut ssh) vers n'importe quel port souhaité (dans l'exemple suivant, 2222) en utilisant l'option correcte en envoyant un appel socat ( sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22 )

Vous avez terminé et vos fichiers système mac OS X sont laissés inchangés. En outre, cette méthode fonctionne non seulement sur Snow Leopard, mais sur toutes les versions de Mac OS X et également sur n'importe quelle machine sur laquelle Socat peut fonctionner.

La dernière chose que vous devez faire si vous utilisez un routeur / pare-feu, c'est d'inclure les commandes de redirection correct dans votre routeur / pare-feu.

En outre, il évite de se coincer dans le débat si la méthode ssh.plist, la méthode des services ou la méthode est meilleure, plus élégante ou pire que l'autre.

Vous pouvez également préparer facilement un script qui fonctionne au démarrage pour reconstruire la redirection socat chaque redémarrage de votre machine. Placez ceci dans /Library/LaunchDaemons/com.serverfault.sshdredirect.plist :

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.serverfault.sshdredirect</string> <key>KeepAlive</key> <dict> <key>NetworkState</key> <true/> </dict> <key>RunAtLoad</key> <true/> <key>ProgramArguments</key> <array> <string>/usr/local/bin/socat</string> <string>TCP-LISTEN:2222,reuseaddr,fork</string> <string>TCP:localhost:22</string> </array> </dict> </plist> 

Utilisez sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist pour le charger. Il sera automatiquement chargé sur les redémarrages futurs.

De plus, vous pouvez également améliorer la sécurité en configurant votre pare-feu pour bloquer les connexions à votre port 22 à partir de n'importe quelle autre interface que le bouclage (127.0.0.1) et (ii) faire un changement similaire dans votre fichier sshd.conf vers Demandez à ssh d'écouter le bouclage uniquement.

Prendre plaisir.

Je ne pouvais pas voir cela correctement documenté dans une page de manuel, mais si vous voulez faire rien d'autre que d'ajouter un auditeur supplémentaire, vous pouvez utiliser un ensemble d'auditeurs et avoir un dict. Supplémentaire. Cela ne nécessite pas d'édition / etc / services si vous utilisez le port directement (mais n'oubliez pas d'ouvrir le port sur votre pare-feu!)

  <key>Listeners</key> <array> <dict> <key>Bonjour</key> <array> <string>ssh</string> <string>sftp-ssh</string> </array> <key>SockServiceName</key> <string>ssh</string> </dict> <dict> <key>SockServiceName</key> <string>22222</string> </dict> </array> 
  • Si, en utilisant uniquement les keys publiques, un client SSH se connecte à un server SSH compromis (ou est déjà connecté), est-ce que le client SSH est également à risque?
  • Puis-je transférer vers l'avant un tunnel inversé de ssh inversé
  • L'invite initiale de ssh se bloque pendant 10 minutes, mais la connection à la console et l'invite initiale sont très réactives. Pourquoi?
  • Pourquoi devrais-je garder l'user root si je ne suis pas censé l'utiliser?
  • Configurez phpmyadmin dans Ubuntu pour écouter uniquement sur le port localhost?
  • Mise à jour d'OpenSSH vers la dernière version stable via yum
  • Existe-t-il un moyen de définir en permanence la taille de la police et de la window dans le mastic?
  • Scanner SSH pour les options d'authentification offertes
  • Sécurisation des tunnels SSH
  • ssh "ne peut pas résoudre l'hôte" si l'hôte est une input A, mais fonctionne avec CNAME
  • en utilisant twist in hosts.allow
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.