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.

ConditionReverse tunnel fitsSomething else is needed
How many services must be reachable?One, or a small fixed set on loopbackAnything that needs many ports or dynamic discovery
Who connects, and how are they authenticated?Named administrators with their own hub accountsThird parties, or anything needing per-flow audit you do not control
Does the device's own LAN need to be reachable?NoYes, 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.

Artikel berkaitan