Saya ingin mengubah port mana yang sshd
digunakan pada server Mac. Misalnya, katakanlah dari port 22 ke port 32.
Pengeditan /etc/sshd_config
tampaknya tidak berhasil. Adakah yang tahu cara mengubahnya? Saya lebih suka metode yang kompatibel dengan semua versi OSX (atau sebanyak mungkin, setidaknya).
ssh
mac-osx
mac-osx-server
Alexander Artemenko
sumber
sumber
/usr/libexec/sshd-keygen-wrapper
(ditunjukkan dalam daftar di bawah) dapat memulai SSH yang berbeda dari yang ditentukan dalam daftar itu sendiri. Jika Anda menyukainya, itu selalu dimulai/usr/sbin/sshd
.Jawaban:
Setiap jawaban sebelumnya berfungsi (seperti yang disarankan Google juga), tetapi mereka kotor dan tidak sopan .
Jadi solusinya sesederhana menggunakan nomor port bukan nama layanan.
Kutipan dari edit saya
/System/Library/LaunchDaemons/ssh.plist
:Catatan: untuk dapat mengedit file ini di El Capitan, Sierra dan mungkin versi yang akan datang juga, Anda harus menonaktifkan SIP (System Integrity Protection). Lihat Bagaimana cara menonaktifkan Perlindungan Integritas Sistem (SIP) [...] .
Hasil edit di atas juga akan memaksa sshd untuk mendengarkan hanya melalui IPV4.
Setelah melakukan perubahan
ssh.plist
, file harus dimuat ulang sebagai berikut:Perhatikan bahwa menggunakan
launchctl stop ...
danlaunchctl start ...
TIDAK akan memuat ulang file ini.Halaman manual dengan informasi lebih lanjut dapat ditemukan dengan mengetik
man launchd.plist
atau menggunakan tautan ini .sumber
Jika Anda ingin sshd mendengarkan pada port tambahan, Anda dapat menambahkan beberapa entri ke kamus Sockets.
Contoh:
sumber
/System/Library/LaunchDaemons/ssh.plist
man launchd.plist
.Dari apa yang saya baca (dan alami) sejauh ini, ada tiga metode utama yang dapat digunakan:
Cara lain untuk melakukannya, yang secara pribadi saya lebih suka untuk semua dan masing-masing metode ini, karena menghindari bermain-main dengan file sistem Mac OS X menggunakan socat untuk mengarahkan ulang port 22 ke port mana pun yang Anda inginkan.
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
)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 dijalankan saat start up untuk membangun kembali pengalihan socat setiap kali Anda me-restart mesin Anda. Tempatkan ini di
/Library/LaunchDaemons/com.serverfault.sshdredirect.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.
sumber
/etc/services
file adalah ide yang buruk - itu akan memengaruhi hal-hal seperti login kunci SSH ke akun github atau bitbucket Anda, yang akan berusaha untuk terhubung ke port baru dan gagal.sudo
untuk menginstal. Anda seharusnya tidak membangun dengan hak istimewa yang ditinggikan.<key>KeepAlive</key><true/>
.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!)
sumber
man launchd.plist
.