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 :
- modifier le paramètre dans le fichier ssh.plist ;
- modifier le paramètre dans le fichier /etc/services ;
- 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.
- Télécharger socat : http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
- 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
)
- Allez dans votre répertoire /usr/local/bin (
cd /usr/local/bin
)
- Décompressez :
sudo tar -xvzf socat-1.7.3.2.tar.gz
- Déplacez-vous vers le répertoire des fichiers non compressés :
cd ./socat-1.7.3.2
- Exécutez les commandes habituelles configure, make et make install pour installer socat (
sudo ./configure && sudo make && sudo make install
)
- 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.