Bir cihaz üçün tərs SSH: loopback dinləyicisi, yoxsa marşrutlaşdırılmış VPN?
Yalnız xaricə qoşula bilən cihaz üçün bir idarəetmə portu. Üç şərt tərs tunelin kifayət edib-etmədiyini və ya real marşrutlaşdırılmış yol lazım olduğunu müəyyən edir.
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.
| 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 |
Üçü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.