Vraag Hoe verander ik sshd port in Mac OS X?


Ik wil wijzigen welke poort sshd gebruikt op een Mac-server. Laten we bijvoorbeeld zeggen van poort 22 naar poort 32.

editing /etc/sshd_config lijkt niet te werken. Weet iemand hoe het te veranderen? Ik verkies een methode die compatibel is met alle OSX-versies (of zoveel mogelijk, tenminste).


52
2018-06-03 14:19


oorsprong


Merk ook op dat /usr/libexec/sshd-keygen-wrapper (weergegeven in de onderstaande plists) kan een andere SSH starten dan is opgegeven in de plist zelf. Als je het kat, begint het altijd /usr/sbin/sshd. - jww


antwoorden:


Elk vorige antwoord werkt (zoals ook google suggereert), maar dat zijn ze vies en onelegant.

De juiste manier om de luisterpoort voor een aangeleverde service op Mac OS X te wijzigen, is door de wijzigingen aan te brengen in de toegewezen toetsen ssh.plist

Dus de oplossing is zo simpel als het gebruik van het poortnummer in plaats van de servicenaam.

Een uittreksel van mijn bewerkt /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>

Notitie: om dit bestand te kunnen bewerken op El Capitan, Sierra en waarschijnlijk ook toekomstige versies, moet je SIP uitschakelen (System Integrity Protection). Zien Hoe schakel ik systeemintegriteitsbescherming (SIP) uit [...].

De bovenstaande bewerking zal sshd ook dwingen alleen via IPV4 te luisteren.

Na het aanbrengen van wijzigingen in ssh.plist, het bestand moet als volgt opnieuw worden geladen:

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

Merk op dat gebruik launchctl stop ... en launchctl start ... zal dit bestand NIET herladen.

De man-pagina met meer informatie kan worden gevonden door te typen man launchd.plist of gebruiken deze link.


61
2017-09-22 09:52



@Yar launchd.plist is de naam van de handleiding. De wijziging is in het bestand ssh.plist in / System / Library / LaunchDaemons - Martijn Pieters
Ik merk op dat je de machine opnieuw moet opstarten of de ssh-service opnieuw moet starten met launchctl. - Danny Staple
Grr ... elke upgrade van OS X (in dit geval Yosemite) verwerpt deze wijziging, waardoor ik moet onthouden wat ik de laatste keer heb gedaan om het te repareren, en waar ik deze informatie heb gevonden. Bedankt voor de oplossing! - Michael
@Hassan moet je twee ssh-instanties starten .. d.w.z. voeg een andere luisteraar toe met verschillende SockServiceName naam en waarde - drAlberT
Merk op dat u op de El Capitan-versie (en waarschijnlijk ook in toekomstige versies) SIP (System Integrity Protection) moet uitschakelen voordat u het bestand kunt bewerken, zie: apple.stackexchange.com/a/208481 - jcfrei


Als u wilt dat sshd op een extra poort luistert, kunt u meerdere vermeldingen toevoegen aan het woordenboek Sockets.

Voorbeeld:

<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>

17
2017-09-28 16:41



Voor de duidelijkheid, @Raim verwijst naar: /System/Library/LaunchDaemons/ssh.plist - Mike Causer
Wat is het doel van de Bonjour-sleutel? - jww
Ik zou ook graag willen weten, wat is het doel van de Bonjour-sleutel? - Drew
Wat is in godsnaam 20022? - Jamie Hutber


Van wat ik tot nu toe heb gelezen (en ervaren), zijn er drie hoofdmethoden die kunnen worden gebruikt:

  1. verander de instelling in het ssh.plist bestand;
  2. verander de instelling in het bestand / etc / services;
  3. verander de instelling in het bestand /etc/sshd.conf.

Een andere manier om dit te doen, waarbij ik persoonlijk veruit de voorkeur geef aan alle en elke methode, omdat het voorkomt dat er met Mac OS X-systeembestanden wordt geknoeid, is socat gebruiken om poort 22 om te leiden naar welke poort je maar wilt.

  1. Socat downloaden: http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
  2. Verplaats het tar.gz-bestand naar uw / usr / local / directory (sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz)
  3. Ga naar uw / usr / local / bin directory (cd /usr/local/bin)
  4. uitpakken: sudo tar -xvzf socat-1.7.3.2.tar.gz
  5. Ga naar de niet-gecomprimeerde bestandsdirectory: cd ./socat-1.7.3.2
  6. Voer de gebruikelijke configure, make en make install uit om socat te installeren (sudo ./configure && sudo make && sudo make install)
  7. Leid poort 22 (standaard ssh) naar elke gewenste poort (in het volgende ex., 2222) met de juiste optie door een sociaal gesprek te verzenden (sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22)

U bent klaar en uw Mac OS X systeembestanden blijven ongewijzigd. Bovendien werkt deze methode niet alleen op Snow Leopard, maar ook op alle versies van Mac OS X en ook op elke computer waarop socat kan worden uitgevoerd.

Het laatste dat u moet doen als u een router / firewall gebruikt, is door de juiste omleidingsopdrachten in uw router / firewall op te nemen.

Het voorkomt ook dat je in het debat blijft steken of de ssh.plist-methode, de servicemethode of welke methode dan ook beter, eleganter of slechter is dan de andere.

U kunt ook gemakkelijk een script voorbereiden dat bij het opstarten wordt uitgevoerd om de social-omleiding opnieuw samen te stellen telkens wanneer u uw machine opnieuw opstart. Plaats dit in /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>

Gebruik sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist om het te laden. Het wordt automatisch geladen bij toekomstige herstart.

Bovendien kunt u de beveiliging verbeteren door (i) uw firewall zo in te stellen dat verbindingen met poort 22 worden geblokkeerd vanaf een andere interface dan de loopback (127.0.0.1) en (ii) een vergelijkbare wijziging in uw sshd.conf-bestand aanbrengen heb ssh luister alleen op de loopback.

Genieten.


6
2017-12-22 10:46



De. Bewerken /etc/services bestand is een slecht idee - het heeft invloed op zaken als SSH-sleutel aanmelden bij uw github- of bitbucket-accounts, die proberen verbinding te maken met de nieuwe poort en mislukken. - ccpizza
Je zou een scratch-map moeten inbouwen. Gebruik dan sudo installeren. Je moet niet bouwen met verhoogde rechten. - jww
Dit werkt ook op El Capitan, waar SIP het wijzigen van /System/Library/LaunchDaemons/ssh.plist moeilijk maakt. Maar op El Capitan is de sleutel "NetworkState" verouderd; ik stel voor <key>KeepAlive</key><true/>. - Robert Tupelo-Schneck
met de nieuwste osx sierra, is de werkende versie: gist.github.com/shanmuha/d97e9f1abdaf1c9b804f748f332a3ffd - Shanmu


Ik kon dit nergens gedocumenteerd ergens goed in een man-pagina zien, maar als je niets anders wilt doen dan een extra luisteraar toevoegen, kun je een reeks luisteraars gebruiken en een extra dictaat hebben. Dit vereist geen bewerking / etc / services als u de poort rechtstreeks gebruikt (maar onthoud dat u de poort van uw firewall opent!)

    <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>

1



Wat is het doel van de Bonjour-sleutel? - jww
@jww Ik denk dat dit een copy-paste-fout is van toen ik dit samenwerkte van andere luisteraars. - Adam Prescott
Ik zou ook graag willen weten, wat is het doel van de Bonjour-sleutel? - Drew