Chcę zmienić, którego portu sshd
używa na serwerze Mac. Na przykład, powiedzmy od portu 22 do portu 32.
Edycja /etc/sshd_config
wydaje się nie działać. Czy ktoś wie jak to zmienić? Wolałbym metodę, która jest kompatybilna ze wszystkimi wersjami OSX (lub przynajmniej jak najwięcej).
ssh
mac-osx
mac-osx-server
Alexander Artemenko
źródło
źródło
/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
.Odpowiedzi:
Każda poprzednia odpowiedź działa (jak sugerują również Google), ale są brudne i nieeleganckie .
Zatem rozwiązanie jest tak proste, jak użycie numeru portu zamiast nazwy usługi.
Fragment mojego zredagowanego
/System/Library/LaunchDaemons/ssh.plist
:Uwaga: aby móc edytować ten plik na El Capitan, Sierra i prawdopodobnie także w przyszłych wersjach, musisz wyłączyć SIP (System Integrity Protection). Zobacz Jak wyłączyć ochronę integralności systemu (SIP) [...] .
Powyższa edycja zmusi także sshd do nasłuchiwania tylko przez IPV4.
Po wprowadzeniu jakichkolwiek zmian
ssh.plist
plik należy ponownie załadować w następujący sposób:Pamiętaj, że użycie
launchctl stop ...
ilaunchctl start ...
NIE spowoduje ponownego załadowania tego pliku.Stronę podręcznika użytkownika z większą ilością informacji można znaleźć, wpisując
man launchd.plist
lub korzystając z tego linku .źródło
Jeśli chcesz, aby sshd nasłuchiwał na dodatkowym porcie, możesz dodać wiele pozycji do słownika gniazd.
Przykład:
źródło
/System/Library/LaunchDaemons/ssh.plist
man launchd.plist
.Z tego, co dotychczas przeczytałem (i doświadczyłem), można korzystać z trzech głównych metod:
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.
sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz
)cd /usr/local/bin
)sudo tar -xvzf socat-1.7.3.2.tar.gz
cd ./socat-1.7.3.2
sudo ./configure && sudo make && sudo make install
)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
: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ę.
źródło
/etc/services
pliku jest złym pomysłem - wpłynie to na takie rzeczy, jak logowanie za pomocą klucza SSH na konta github lub bitbucket, które będą próbowały połączyć się z nowym portem i nie powiedzie się.sudo
aby zainstalować. Nie powinieneś budować z podwyższonymi uprawnieniami.<key>KeepAlive</key><true/>
.Nie widziałem tego dobrze udokumentowanego na stronie podręcznika, ale jeśli nie chcesz nic więcej robić niż dodać dodatkowego słuchacza, możesz użyć tablicy słuchaczy i mieć dodatkowy dyktand. Nie wymaga to edytowania / etc / services, jeśli używasz portu bezpośrednio (ale pamiętaj, aby otworzyć port w zaporze!)
źródło
man launchd.plist
.