Como alterar a porta sshd no Mac OS X?

52

Eu quero alterar qual porta sshd usa em um servidor Mac. Por exemplo, digamos da porta 22 para a porta 32.

A edição de /etc/sshd_config parece não funcionar. Alguém sabe como mudar isso? Eu prefiro um método que seja compatível com todas as versões do OSX (ou pelo menos o máximo possível).

    
por Alexander Artemenko 03.06.2009 / 16:19

4 respostas

61

Todas as respostas anteriores estão funcionando (como o Google sugere também), mas são sujas e deselegantes .

The right way to change the listening port for a launchd handled service on Mac OS X is to make the changes the dedicated keys available in ssh.plist

Portanto, a solução é tão simples quanto usar o número da porta em vez do nome do serviço.

Um trecho da minha /System/Library/LaunchDaemons/ssh.plist editada:

    <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: para poder editar este arquivo no El Capitan, Sierra e provavelmente em futuras versões, você precisa desativar o SIP (System Integrity Protection). Veja Como desabilito a Proteção de Integridade do Sistema (SIP) .

A edição acima também irá forçar o sshd a escutar apenas o IPV4.

Depois de fazer alterações em ssh.plist , o arquivo deve ser recarregado da seguinte forma:

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

Observe que o uso de launchctl stop ... e launchctl start ... NÃO recarregará esse arquivo.

A página man com mais informações pode ser encontrada digitando man launchd.plist ou usando este link .

    
por 22.09.2009 / 11:52
17

Se você quiser que o sshd ouça em uma porta adicional, você pode adicionar várias entradas ao dicionário Sockets.

Exemplo:

<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>
    
por 28.09.2010 / 18:41
6

Pelo que li (e experimentei) até agora, existem três métodos principais que podem ser usados:

  1. altere a configuração no arquivo ssh.plist;
  2. altere a configuração no arquivo / etc / services;
  3. altere a configuração no arquivo /etc/sshd.conf.

Outra maneira de fazer isso, que eu pessoalmente prefiro a todos e cada um desses métodos, porque evita mexer nos arquivos do sistema Mac OS X é usando socat para redirecionar a porta 22 para qualquer porta que você quiser.

  1. Faça o download do socat: link
  2. Mova o arquivo tar.gz para o diretório / usr / local / ( sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz )
  3. Vá para o diretório / usr / local / bin ( cd /usr/local/bin )
  4. Descompactar: sudo tar -xvzf socat-1.7.3.2.tar.gz
  5. Mover para o diretório de arquivos descompactados: cd ./socat-1.7.3.2
  6. Execute a configuração usual, make e make install para instalar o socat ( sudo ./configure && sudo make && sudo make install )
  7. Redirecionar a porta 22 (padrão ssh) para qualquer porta desejada (no exemplo a seguir, 2222) usando a opção correta enviando uma chamada socat ( sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22 )

Você terminou e seus arquivos de sistema do Mac OS X não foram alterados. Além disso, esse método funciona não apenas no Snow Leopard, mas em todas as versões do Mac OS X e também em qualquer máquina na qual o socat possa ser executado.

A última coisa que você precisa fazer se usar um roteador / firewall é incluir os comandos de redirecionamento corretos em seu roteador / firewall.

Além disso, evita ficar preso no debate se o método ssh.plist, o método de serviços ou o método que for melhor, mais elegante ou pior que o outro.

Você também pode preparar facilmente um script que é executado na inicialização para reconstruir o redirecionamento socat a cada vez que você reinicia sua máquina. Coloque isso em /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>

Use sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist para carregá-lo. Ele será carregado automaticamente em reinicializações futuras.

Além disso, você também pode melhorar a segurança (i) configurando seu firewall para bloquear quaisquer conexões à sua porta 22 de qualquer outra interface que não o loopback (127.0.0.1) e (ii) fazer uma alteração similar em seu sshd. arquivo conf para ter ssh escutar apenas no loopback.

Aprecie.

    
por 05.05.2017 / 15:09
1

Eu não conseguia ver isso documentado em qualquer lugar corretamente em uma página de manual, mas se você quiser fazer nada além de adicionar um ouvinte extra, você pode usar uma matriz de ouvintes e ter um dit extra. Isso não requer a edição de / etc / services se você usar a porta diretamente (mas lembre-se de abrir a porta no seu firewall!)

    <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>
    
por 22.12.2011 / 11:46