it-swarm.asia

Mac OS X'te sshd bağlantı noktası nasıl değiştirilir?

Mac sunucusunda sshd'nin kullandığı bağlantı noktasını değiştirmek istiyorum. Örneğin, 22 numaralı bağlantı noktasından 32 numaralı bağlantı noktasına diyelim.

Düzenleniyor /etc/sshd_config çalışmıyor. Nasıl değiştirileceğini bilen var mı? Tüm OSX sürümleriyle (veya en azından mümkün olduğunca çok) uyumlu bir yöntemi tercih ederim.

54

Önceki her yanıt çalışıyor (Google'ın da önerdiği gibi), ancak bunlar kirli ve yetersiz.

Mac OS X'te başlatılan bir başlatılan hizmetin dinleme bağlantı noktasını değiştirmenin doğru yolu, değişiklikleri ayrılmış tuşlara ssh.plist

Dolayısıyla çözüm, servis adı yerine port numarasını kullanmak kadar basittir.

Düzenlediğim bir alıntı /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>

Not: Bu dosyayı El Capitan, Sierra ve muhtemelen gelecekteki sürümlerde düzenleyebilmek için SIP (Sistem Bütünlüğü Koruması) Bkz. Sistem Bütünlüğü Korumasını (SIP) nasıl devre dışı bırakırım [...] .

Yukarıdaki düzenleme sshd'yi sadece IPV4 üzerinden dinlemeye zorlayacaktır.

ssh.plist, dosya aşağıdaki gibi yeniden yüklenmelidir:

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

launchctl stop ... ve launchctl start ... bu dosyayı yeniden YÜKLEMEYECEKTİR.

Daha fazla bilgi içeren kılavuz sayfasını man launchd.plist veya bu bağlantı kullanarak.

62
drAlberT

Sshd'nin ek bir bağlantı noktasını dinlemesini istiyorsanız, Yuva sözlüğüne birden çok giriş ekleyebilirsiniz.

Misal:

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

Şimdiye kadar okuduğum ve deneyimlediğim kadarıyla kullanılabilecek üç ana yöntem var:

  1. ssh.plist dosyasındaki ayarı değiştirin;
  2. / etc/services dosyasındaki ayarı değiştirin;
  3. /etc/sshd.conf dosyasındaki ayarı değiştirin.

Kişisel olarak bu yöntemlerin hepsini ve her birini tercih ettiğim başka bir yol, çünkü Mac OS X sistem dosyalarıyla uğraşmaktan kaçındığı için 22 numaralı bağlantı noktasını istediğiniz bağlantı noktasına yönlendirmek için socat kullanıyor.

  1. Socat'ı indirin: http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
  2. Tar.gz dosyasını/usr/local/dizininize taşıyın (Sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz)
  3. / Usr/local/bin dizininize gidin (cd /usr/local/bin)
  4. Sıkıştır: Sudo tar -xvzf socat-1.7.3.2.tar.gz
  5. Sıkıştırılmamış dosya dizinine gidin: cd ./socat-1.7.3.2
  6. Socat (Sudo ./configure && Sudo make && Sudo make install) Kurulumunu yapmak için normal yapılandırmayı çalıştırın, kurun ve yükleyin
  7. Socat çağrısı göndererek (Sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22) Doğru seçeneği kullanarak port 22'yi (varsayılan ssh) istediğiniz herhangi bir porta (aşağıdaki örn. 2222'de) yönlendirin.

İşiniz bitti ve mac os x sistem dosyalarınız değişmeden kaldı. Ek olarak, bu yöntem sadece Snow Leopard'da değil, Mac OS X'in tüm sürümlerinde ve ayrıca socat'ın çalışabileceği herhangi bir makinede çalışır.

Bir yönlendirici/güvenlik duvarı kullanıyorsanız yapmanız gereken son şey, yönlendiricinize/güvenlik duvarınıza doğru yönlendirme komutlarını eklemektir.

Ayrıca, ssh.plist yönteminin, hizmetler yönteminin veya herhangi bir yöntemin diğerinden daha iyi, daha zarif veya daha kötü olup olmadığı tartışmasına sıkışmaktan kaçınır.

Ayrıca, makinenizi yeniden başlattığınızda her bir socat yönlendirmesini yeniden oluşturmak için başlangıçta çalışan bir komut dosyası da hazırlayabilirsiniz. Bunu /Library/LaunchDaemons/com.serverfault.sshdredirect.plist İçine yerleştirin:

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

Yüklemek için Sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist Kullanın. Gelecekteki yeniden başlatmalarda otomatik olarak yüklenir.

Buna ek olarak, güvenliği (i) güvenlik duvarınızı geri döngü (127.0.0.1) dışındaki herhangi bir arabirimden bağlantı noktası 22'ye olan herhangi bir bağlantıyı engelleyecek şekilde ayarlayarak ve (ii) sshd.conf dosyanızda benzer bir değişiklik yaparak ssh sadece geridöngüde dinletir.

Zevk almak.

6
Cedric

Bunu bir man sayfasında herhangi bir yerde düzgün bir şekilde belgelendiremedim, ancak ekstra bir dinleyici eklemek dışında başka bir şey yapmak istemiyorsanız, bir dizi dinleyici kullanabilir ve fazladan bir diksiyon yapabilirsiniz. Bağlantı noktasını doğrudan kullanırsanız bu düzenleme/etc/services gerektirmez (ancak güvenlik duvarınızda bağlantı noktasını açmayı unutmayın!)

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