Cihazınız operator NAT-ının arxasındadır, xaricə qoşulmalar aça bilir və heç kimin çata bilmədiyi SSH serveri işlədir. Gələn sorğu adətən "ona VPN ver" kimi ifadə olunur, bu isə bir neçə cavabdan biridir. Qəbul etməzdən əvvəl bir inzibati TCP portu, yoxsa bütöv alt şəbəkəyə marşrutlaşdırılmış yol lazım olduğunu qərarlaşdırın, çünki bunlar fərqli məruz qalma ilə fərqli layihələrdir.

Tərs tunel dar versiyaya yaxşı cavab verir. Cihaz hub-ınıza qoşulur, hub-dan loopback portunda dinləməyi xahiş edir və həmin portu öz SSH xidmətinə yönləndirir. Sonra administratorlar dinləyiciyə hub vasitəsilə çatır, açıq internet vasitəsilə yox.

Seçimi həll edən üç şərt

Bunları hər hansı konfiqurasiyadan əvvəl yazın. Onlar məhdud idarəetmə girişi ilə şəbəkə genişlənməsi arasındakı sərhəddir və onları qarışdırmaq beş sətirlik tunelin sahibsiz düz şəbəkəyə çevrilmə yoludur.

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

Üçüncü sətir insanların mübahisə etdiyi sətirdir. Cihazın SSH portuna tunel onun qonşularını şəbəkənizə qoymur və əlavə yönləndirmə zənciri ilə elə görünməsi təmin edilməməlidir. Tələb həqiqətən LAN-dırsa, bunu deyin və əvəzində onu layihələndirin.

Hub tərəfi: məhdud relay hesabı

Hər cihaza açıq açar autentifikasiyası olan və interaktiv sessiyası olmayan öz relay hesabını verin. Match bloku bu hesabla məhdudlaşdırılaraq icazəni kiçik saxlayır və şəxsi açar lazım olduğu yerdə, cihazda qalır.

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 maraqlı sətirdir. O, shell və alt sistem sessiyalarını rədd edir, eyni zamanda cihazın ehtiyac duyduğu yönləndirməyə icazə verir, buna görə oğurlanmış açar interaktiv girişə çevrilə bilməz. PermitListen hub tərəfindəki dinləyici ünvanını və portunu bərkidir və GatewayPorts no onu hub-ın yerləşdiyi şəbəkəyə açmaq əvəzinə loopback-də saxlayır.

Yenidən yükləməzdən əvvəl effektiv konfiqurasiyanı sınayın və bunu edərkən ikinci sessiyanı açıq saxlayın. Match bloku təsadüfən hamıya tətbiq olunarsa və ya seçim adında yazı səhvi olarsa, bu, sərtləşdirdiyiniz qutudan özünüzü kilidləməyin klassik yoludur. İşləyən konfiqurasiyanı çıxarın və yeni yazdığınız fayla güvənmək əvəzinə seçimləri geri oxuyun. Nəzərə alın ki, seçim dəstəyi buraxılışlar arasında fərqlənir, ona görə daha yeni serverdə qəbul edilən sətir köhnə serverdə sadəcə nəzərə alınmaya bilər.

Cihaz tərəfi: uğursuzluğu ucadan bildirən yönləndirmə

Cihaz bağlantını açır və dinləyicini xahiş edir. İki ünvan -R arqumentində fərqli mənalar daşıyır və onları soldan sağa oxumaq hansının hansı olduğunu yadda saxlamağın ən sürətli yoludur.

ssh -NT \
    -o ExitOnForwardFailure=yes \
    -o ServerAliveInterval=30 \
    -o ServerAliveCountMax=3 \
    -R 127.0.0.1:21022:127.0.0.1:22 \
    [email protected]

Sol cüt hub-ın dinləməli olduğu yerdir. Sağ cüt sorğu gəldikdə cihazın qoşulduğu ünvandır və cihazın öz tərəfindən həll olunur. Onları dəyişmək təmiz qalxan və yanlış yerə yönləndirən tunel yaradır, bu isə uğursuzluqdan pisdir.

ExitOnForwardFailure=yes tələb olunan dinləyici qurula bilmədikdə əmrin çıxmasına səbəb olur, beləliklə yenidən başlatma dövrü yarım işləyən sessiya buraxmaq əvəzinə sizə həqiqəti deyir. O, yerli SSH xidmətinin sonradan sağlam olub-olmadığı barədə heç nə demir, ona görə onu proses meneceri və ara-sıra real bağlantı testi ilə birləşdirin.

Əlavə hop-dan qaçmaq üçün loopback dinləmə ünvanını heç vaxt vəhşi kartla əvəz etməyin. Bu tək dəyişiklik idarəetmə yolu ilə açıq şəkildə çatıla bilən port arasındakı fərqdir və adətən sazlama zamanı baş verir, sonra qalır. Həmkarınız porta hub vasitəsilə çata bilmirsə, bind-i genişlətmək əvəzinə jump konfiqurasiyasını düzəldin. Bu dizayn üçün bütün təhlükəsizlik arqumenti loopback-dir.

Hub vasitəsilə administrator girişi

Hub-da adi hesabı olan administrator onun vasitəsilə yönləndirilmiş porta keçə bilər. Relay hesabı bunun üçün istifadə olunmur, onları ayrı saxlamağın mənası da budur.

ssh -J [email protected] -o HostKeyAlias=device-7 \
    -p 21022 [email protected]

Cihazın host açarını seçdiyiniz ləqəb altında yoxlayın, çünki həmin açar zəncirin sonundakı cihazı müəyyən edir və tunel yalnız nəqliyyatdır. Ucdan-uca giriş hələ də hər iki tərəfi autentifikasiya edir; ortaq hub-da bitən tunel onu təkbaşına etibarlı yol etmir.

Həyat dövrünə sahib çıxın

Cihaz əmrini tam bir aktiv nüsxə və qəsdən seçdiyiniz yenidən başlatma siyasəti ilə proses menecerinin altında işlədin. Canlı saxlama seçimləri ölü qarşı tərəfi aşkar edir; onlar çıxmış prosesi diriltmir.

Sonra istismardan çıxarma prosedurunu yazın. Hər cihaz öz dinləyicisini və öz açarını alır, buna görə xidmətdən çıxarma həmin hesabı ləğv etmək və həmin açarı silmək deməkdir, hər digər cihazın paylaşdığı donanma daxili sirri döndərmək deyil.

Nəhayət, loopback-in sizə nə qazandırdığını xatırlayın. O, şəbəkə məruz qalmasını məhdudlaşdırır və ortaq hub-dakı digər yerli istifadəçilər barədə heç nə etmir, ona görə hub-ın öz giriş siyasəti hələ də düzgün olmalıdır. sshd_config istinadı yuxarıda istifadə olunan seçimlərin hər birini sənədləşdirir və onlardan hər hansı birini genişlətməzdən əvvəl yönləndirmə bölmələrini tam oxumağa dəyər.

Əlaqəli məqalələr