SSH terbalik untuk satu peranti: pendengar loopback atau VPN dihalakan?
Satu port pengurusan untuk peranti yang hanya boleh mendail keluar. Tiga syarat menentukan sama ada terowong terbalik cukup atau anda perlukan laluan dihalakan yang sebenar.
Peranti anda berada di belakang NAT pembawa, ia boleh membuka sambungan keluar, dan ia menjalankan pelayan SSH yang tiada siapa boleh capai. Permintaan yang tiba biasanya dirumuskan sebagai "berikan ia VPN", yang merupakan satu jawapan antara beberapa. Sebelum menerimanya, tentukan sama ada anda memerlukan satu port TCP pentadbiran atau laluan dihalakan ke seluruh subrangkaian, kerana itu projek berbeza dengan pendedahan berbeza.
Terowong terbalik menjawab versi sempit dengan baik. Peranti mendail hab anda, meminta hab mendengar pada port loopback, dan memajukan port itu kembali ke perkhidmatan SSHnya sendiri. Selepas itu pentadbir mencapai pendengar melalui hab, bukan melalui internet awam.
Tiga syarat yang menentukan pilihan
Tuliskan ini sebelum sebarang konfigurasi. Ia adalah sempadan antara pintu masuk pengurusan terhad dan lanjutan rangkaian, dan mencampurkannya ialah cara terowong lima baris menjadi rangkaian rata tanpa pemilik.
| Condition | Reverse tunnel fits | Something else is needed |
|---|---|---|
| How many services must be reachable? | One, or a small fixed set on loopback | Anything that needs many ports or dynamic discovery |
| Who connects, and how are they authenticated? | Named administrators with their own hub accounts | Third parties, or anything needing per-flow audit you do not control |
| Does the device's own LAN need to be reachable? | No | Yes, so a routed VPN or a managed platform is the honest answer |
Baris ketiga ialah yang diperdebatkan orang. Terowong ke port SSH peranti tidak meletakkan jirannya pada rangkaian anda, dan ia tidak sepatutnya kelihatan begitu melalui rantaian pemajuan lanjut. Jika keperluan itu benar-benar LAN, katakan begitu dan reka bentuk itu sebaliknya.
Bahagian hab: akaun geganti terhad
Berikan setiap peranti akaun geganti sendiri dengan pengesahan kunci awam dan tanpa sesi interaktif. Match blok yang terhad kepada akaun itu mengekalkan kebenaran kecil, dan kunci peribadi kekal pada peranti di mana ia sepatutnya.
Match User relay-dev-7
AuthenticationMethods publickey
PubkeyAuthentication yes
AllowTcpForwarding remote
PermitListen 127.0.0.1:21022
GatewayPorts no
MaxSessions 0
PermitTTY no
X11Forwarding no
AllowAgentForwarding no
MaxSessions 0 ialah baris yang menarik. Ia menolak sesi shell dan subsistem sambil masih membenarkan pemajuan yang diperlukan peranti, jadi kunci yang dicuri tidak boleh dijadikan log masuk interaktif. PermitListen memakukan alamat dan port pendengar di bahagian hab, dan GatewayPorts no mengekalkannya pada loopback dan bukannya membukanya kepada rangkaian tempat hab berada.
Uji konfigurasi berkesan sebelum memuat semula, dan biarkan sesi kedua terbuka semasa anda melakukannya. Match blok yang terpakai kepada semua orang secara tidak sengaja, atau kesilapan taip dalam nama pilihan, ialah cara klasik untuk mengunci diri keluar dari kotak yang anda keraskan. Buang konfigurasi yang sedang berjalan dan baca semula pilihan itu dan bukannya mempercayai fail yang baru anda tulis. Perhatikan bahawa sokongan pilihan berbeza antara binaan, jadi baris yang diterima dalam pelayan lebih baharu mungkin hanya diabaikan oleh yang lebih lama.
Bahagian peranti: pemajuan yang gagal dengan kuat
Peranti membuka sambungan dan meminta pendengar. Dua alamat dalam argumen -R bermaksud perkara berbeza, dan membacanya dari kiri ke kanan ialah cara terpantas untuk mengingati yang mana satu.
ssh -NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-R 127.0.0.1:21022:127.0.0.1:22 \
[email protected]
Pasangan kiri ialah tempat hab patut mendengar. Pasangan kanan ialah apa yang peranti sambung apabila permintaan tiba, diselesaikan dari sisi peranti itu sendiri. Menukarnya menghasilkan terowong yang naik dengan bersih dan memajukan ke tempat yang salah, yang lebih buruk daripada kegagalan.
ExitOnForwardFailure=yes membuat arahan keluar apabila pendengar yang diminta tidak dapat diwujudkan, jadi gelung mula semula memberitahu anda kebenaran dan bukannya meninggalkan sesi yang separuh berfungsi. Ia tidak mengatakan apa-apa tentang sama ada perkhidmatan SSH tempatan sihat kemudian, jadi pasangkannya dengan pengurus proses dan ujian sambungan sebenar sekali-sekala.
Jangan sekali-kali menggantikan alamat dengar loopback dengan kad liar untuk mengelakkan lompatan tambahan. Perubahan tunggal itu ialah perbezaan antara laluan pengurusan dan port yang boleh dicapai secara awam, dan ia biasanya berlaku semasa nyahpepijat dan kemudian kekal. Jika rakan sekerja tidak dapat mencapai port melalui hab, betulkan konfigurasi lompatan dan bukannya meluaskan pengikatan. Loopback ialah seluruh hujah keselamatan reka bentuk ini.
Akses pentadbir melalui hab
Pentadbir dengan akaun biasa pada hab boleh melompat melaluinya ke port yang dimajukan. Akaun geganti tidak digunakan untuk ini, dan itulah intinya mengekalkannya berasingan.
ssh -J [email protected] -o HostKeyAlias=device-7 \
-p 21022 [email protected]
Sahkan kunci hos peranti di bawah alias yang anda pilih, kerana kunci itu mengenal pasti peranti di hujung rantaian dan terowong hanyalah pengangkutan. Log masuk hujung ke hujung masih mengesahkan kedua-dua hujung; terowong yang berakhir pada hab dikongsi tidak menjadikannya laluan dipercayai dengan sendirinya.
Miliki kitaran hayat
Jalankan arahan peranti di bawah pengurus proses dengan tepat satu contoh aktif dan dasar mula semula yang anda pilih dengan sengaja. Pilihan keepalive mengesan rakan mati; ia tidak menghidupkan semula proses yang telah keluar.
Kemudian tulis prosedur persaraan. Setiap peranti mendapat pendengar sendiri dan kunci sendiri, jadi penyahaktifan bermaksud membatalkan akaun itu dan membuang kunci itu, bukan memutar rahsia yang dikongsi seluruh armada.
Akhir sekali, ingat apa yang loopback berikan kepada anda. Ia mengehadkan pendedahan rangkaian dan tidak melakukan apa-apa tentang pengguna tempatan lain pada hab dikongsi, jadi dasar akses hab itu sendiri masih perlu betul. Rujukan sshd_config mendokumenkan setiap pilihan yang digunakan di atas, dan wajar membaca bahagian pemajuan sepenuhnya sebelum meluaskan mana-mana daripadanya.