65 votes

Comment changer le port sshd sur Mac OS X ?

Je veux changer le port sshd utilise sur un serveur Mac. Par exemple, disons du port 22 au port 32.

Modification de /etc/sshd_config ne semble pas fonctionner. Quelqu'un sait-il comment le changer ? Je préférerais une méthode qui soit compatible avec toutes les versions d'OSX (ou le plus grand nombre possible, du moins).

67voto

drAlberT Points 10812

Toutes les réponses précédentes fonctionnent (comme le suggère aussi Google), mais elles sont les suivantes sale et inélégant .

La bonne façon de changer le port d'écoute d'un service géré par launchd sous Mac OS X est d'effectuer les changements à l'aide des clés dédiées disponibles dans ssh.plist

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

Un extrait de mon édition /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>

Nota:

Pour pouvoir modifier ce fichier sur El Capitan , Sierra et probablement aussi les versions futures, vous devez désactiver SIP (Protection de l'intégrité du système). Voir Comment désactiver la protection de l'intégrité du système (SIP) ? .

Pour Catalina Même après avoir désactivé SIP, les volumes ne peuvent pas être écrits. Utilisez sudo mount -uw / afin de permettre l'écriture de /System . Effectuez le changement puis restaurez SIP et redémarrez.


La modification ci-dessus forcera é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 rechargera PAS ce fichier.

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

19voto

Mathew Hall Points 1066

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>

7voto

Cedric Points 1

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. modifier le paramètre dans le fichier ssh.plist ;
  2. modifier le paramètre dans le fichier /etc/services ;
  3. modifier le paramètre dans le fichier /etc/sshd.conf.

Une autre façon de procéder, que je préfère personnellement et de loin à toutes ces méthodes, car elle évite d'avoir à manipuler les fichiers système de Mac OS X, consiste à utiliser socat pour rediriger le port 22 vers le port de votre choix.

  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. Allez dans 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és : cd ./socat-1.7.3.2
  6. Exécutez les commandes habituelles configure, make et make install pour installer socat ( sudo ./configure && sudo make && sudo make install )
  7. Rediriger le port 22 (ssh par défaut) vers le port de votre choix (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 restent inchangés. De plus, cette méthode fonctionne non seulement sur Snow Leopard, mais sur toutes les versions de Mac OS X et également sur toute machine sur laquelle socat peut fonctionner.

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

De plus, cela évite de s'enliser dans le débat de savoir si la méthode ssh.plist, la méthode services ou la méthode quelconque est meilleure, plus élégante ou pire que l'autre.

Vous pouvez aussi facilement préparer un script qui s'exécute au démarrage pour reconstruire la redirection socat à chaque fois que vous redémarrez 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 se chargera automatiquement lors des prochains redémarrages.

En outre, vous pouvez également améliorer la sécurité en (i) configurant votre pare-feu pour bloquer toute connexion à votre port 22 à partir de toute autre interface que la boucle (127.0.0.1) et (ii) en effectuant une modification similaire dans votre fichier sshd.conf pour que ssh écoute uniquement sur la boucle.

Profitez-en.

1voto

Adam Prescott Points 111

Je n'ai pas trouvé de documentation appropriée dans une page de manuel, mais si vous ne voulez rien faire de plus que d'ajouter un écouteur supplémentaire, vous pouvez utiliser un tableau d'écouteurs et avoir un dict supplémentaire. Cela ne nécessite pas d'éditer /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>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X