Z tego, co dotychczas przeczytałem (i doświadczyłem), można korzystać z trzech głównych metod:
- zmień ustawienie w pliku ssh.plist;
- zmień ustawienie w pliku / etc / services;
- zmień ustawienie w pliku /etc/sshd.conf.
Innym sposobem na to, który osobiście zdecydowanie wolę wszystkie i każdą z tych metod, ponieważ pozwala uniknąć bałaganu przy plikach systemowych Mac OS X, jest użycie polecenia socat do przekierowania portu 22 na dowolny port, który chcesz.
- Pobierz socat: http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
- Przenieś plik tar.gz do katalogu / usr / local / katalogu (
sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz
)
- Przejdź do katalogu / usr / local / bin (
cd /usr/local/bin
)
- Rozpakuj:
sudo tar -xvzf socat-1.7.3.2.tar.gz
- Przejdź do nieskompresowanego katalogu plików:
cd ./socat-1.7.3.2
- Uruchom zwykłą konfigurację, make i make install, aby zainstalować socat (
sudo ./configure && sudo make && sudo make install
)
- Przekieruj port 22 (domyślny ssh) na dowolny port, który chcesz (w następującym przykładzie, 2222), używając właściwej opcji, wysyłając wywołanie socat (
sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22
)
Gotowe, a pliki systemowe Mac OS X pozostały niezmienione. Ponadto ta metoda działa nie tylko w systemie Snow Leopard, ale we wszystkich wersjach systemu Mac OS X, a także na każdym komputerze, na którym może działać socat.
Ostatnią rzeczą, którą musisz zrobić, jeśli używasz routera / zapory sieciowej, jest dołączenie prawidłowych poleceń przekierowania do routera / zapory ogniowej.
Ponadto pozwala uniknąć utknięcia w debacie, czy metoda ssh.plist, metoda usług lub inna metoda jest lepsza, bardziej elegancka lub gorsza od drugiej.
Możesz również łatwo przygotować skrypt, który uruchamia się przy uruchomieniu, aby odbudować przekierowanie socat przy każdym ponownym uruchomieniu komputera. Umieść to w /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>
Użyj, sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist
aby go załadować. Będzie automatycznie ładował się przy kolejnych restartach.
Ponadto można także poprawić bezpieczeństwo, ustawiając (i) zaporę sieciową tak, aby blokowała wszelkie połączenia do portu 22 z dowolnego interfejsu innego niż sprzężenie zwrotne (127.0.0.1) i (ii) wprowadziła podobną zmianę w pliku sshd.conf, aby Ssh nasłuchuje tylko w pętli zwrotnej.
Cieszyć się.
/usr/libexec/sshd-keygen-wrapper
(pokazane na listach poniżej) może rozpocząć inny SSH niż ten podany na liście. Jeśli to zrobisz, zawsze się zacznie/usr/sbin/sshd
.