pengembangan-web-mp-pd.com

Bagaimana cara mengubah port ssh pada Mac OS X?

Saya ingin mengubah port sshd yang digunakan pada server Mac. Misalnya, katakanlah dari port 22 ke port 32.

Editing /etc/sshd_config tampaknya tidak berfungsi. Adakah yang tahu cara mengubahnya? Saya lebih suka metode yang kompatibel dengan semua versi OSX (atau sebanyak mungkin, setidaknya).

54

Setiap jawaban sebelumnya berfungsi (seperti yang disarankan Google juga), tetapi semuanya kotor dan tidak elegan.

Cara yang tepat untuk mengubah port mendengarkan untuk layanan launchd yang ditangani pada Mac OS X adalah dengan membuat perubahan pada tombol khusus tersedia di ssh.plist

Jadi solusinya sesederhana menggunakan nomor port bukan nama layanan.

Kutipan dari edit saya /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>

Catatan: untuk dapat mengedit file ini di El Capitan, Sierra dan mungkin versi yang akan datang juga, Anda perlu menonaktifkan SIP (Perlindungan Integritas Sistem). Lihat Bagaimana cara menonaktifkan Perlindungan Integritas Sistem (SIP) [...] .

Hasil edit di atas juga akan memaksa sshd untuk mendengarkan hanya melalui IPV4.

Setelah melakukan perubahan apa pun ke ssh.plist, file harus dimuat ulang sebagai berikut:

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

Perhatikan bahwa menggunakan launchctl stop ... dan launchctl start ... TIDAK akan memuat ulang file ini.

Halaman manual dengan informasi lebih lanjut dapat ditemukan dengan mengetik man launchd.plist atau menggunakan tautan ini .

62
drAlberT

Jika Anda ingin sshd mendengarkan pada port tambahan, Anda dapat menambahkan beberapa entri ke kamus Sockets.

Contoh:

<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

Dari apa yang saya baca (dan alami) sejauh ini, ada tiga metode utama yang dapat digunakan:

  1. ubah pengaturan pada file ssh.plist;
  2. ubah pengaturan pada file/etc/services;
  3. ubah pengaturan pada file /etc/sshd.conf.

Cara lain untuk melakukannya, yang secara pribadi saya lebih suka untuk semua dan masing-masing metode ini, karena menghindari main-main dengan file sistem Mac OS X menggunakan socat untuk mengarahkan ulang port 22 ke port mana pun yang Anda inginkan.

  1. Unduh socat: http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz
  2. Pindahkan file tar.gz ke direktori/usr/local/Anda (Sudo mv ./socat-1.7.3.2.tar.gz /usr/local/bin/socat-1.7.3.2.tar.gz)
  3. Buka direktori/usr/local/bin Anda (cd /usr/local/bin)
  4. Tidak terkompresi: Sudo tar -xvzf socat-1.7.3.2.tar.gz
  5. Pindah ke direktori file yang tidak dikompresi: cd ./socat-1.7.3.2
  6. Jalankan konfigurasi yang biasa, buat, dan instal untuk menginstal socat (Sudo ./configure && Sudo make && Sudo make install)
  7. Redirect port 22 (ssh default) ke port apa pun yang Anda inginkan (dalam contoh berikut, 2222) menggunakan opsi yang benar dengan mengirim panggilan socat (Sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22)

Anda selesai dan file sistem mac os x Anda tidak berubah. Selain itu, metode ini tidak hanya berfungsi pada Snow Leopard, tetapi pada semua versi Mac OS X dan juga pada mesin apa pun yang menjalankan socat.

Hal terakhir yang perlu Anda lakukan jika Anda menggunakan router/firewall adalah memasukkan perintah pengalihan yang benar dalam router/firewall Anda.

Juga, ia menghindari terjebak dalam perdebatan apakah metode ssh.plist, metode layanan atau metode apa pun yang lebih baik, lebih elegan atau lebih buruk daripada yang lain.

Anda juga dapat dengan mudah menyiapkan skrip yang berjalan saat start up untuk membangun kembali pengalihan socat setiap kali Anda me-restart mesin Anda. Tempatkan ini di /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>

Gunakan Sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist untuk memuatnya. Itu akan secara otomatis memuat pada reboot masa depan.

Selain itu, Anda juga dapat meningkatkan keamanan dengan (i) mengatur firewall Anda untuk memblokir koneksi ke port 22 Anda dari antarmuka lain selain loopback (127.0.0.1) dan (ii) membuat perubahan serupa di file sshd.conf Anda untuk minta ssh mendengarkan di loopback saja.

Nikmati.

6
Cedric

Saya tidak bisa melihat ini didokumentasikan dengan baik di halaman manual, tetapi jika Anda ingin melakukan tidak lebih dari menambahkan pendengar tambahan, Anda dapat menggunakan array pendengar dan memiliki dict tambahan. Ini tidak memerlukan pengeditan/etc/services jika Anda menggunakan port secara langsung (tapi ingat untuk membuka port di firewall Anda!)

    <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