Једна машина већ има одобрен приступ VPN-у, другој машини је потребна тачно једна приватна HTTPS услуга, а локално SSH прослеђивање може да премости ту празнину без давања тунела другој машини. Прослеђивање преноси једну TCP дестинацију уместо целе мреже, и управо то ограничење је поента. Прођите кроз пет корака испод по реду, јер сваки не успева из другог разлога и каснији корак не може да спасе ранију празнину. Ако недостаје било који предуслов, овај дизајн га не решава и никакво подешавање команди неће помоћи.

Први корак: потврдите три предуслова

Три ствари морају већ да буду тачне пре него што било која команда добије значење. Потребна је дозвола да прву машину користите као домаћина прослеђивања, радни SSH приступ до ње и серверска политика која дозвољава предвиђену дестинацију. SSH налог направљен за пренос датотека може имати искључено прослеђивање, а сервер који дозвољава прослеђивање ипак може да ограничи које су дестинације доступне преко њега. Питајте пре тестирања, јер коришћење радне станице колеге као скок тачке без договора је проблем политике, чак и када команда ради беспрекорно.

Две команде решавају техничку половину тог списка. Прва доказује да налог и кључ раде без интерактивног упита, а друга исписује стварну серверску политику уместо закоментарисаног примера у конфигурационој датотеци.

ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'

Други корак: повежите loopback порт и одржите сесију живом

На машини која извршава клијентску апликацију отворите локално прослеђивање ка приватној услузи. Повежите га експлицитно са loopback-ом да се не објављује на локалној мрежи, и изаберите висок порт који ниједна локална услуга већ не држи. Држите сесију отворену док радите, јер њено затварање затвара и слушаоца. ExitOnForwardFailure претвара одбијено повезивање или заузет порт у тренутни излаз уместо сесије која остаје без прослеђивања, и управо тај режим отказа троши највише времена.

Приватна веза се успоставља са скок домаћина, па његов DNS, руте, VPN политика и приступ услузи морају сви да раде. SSH сесија не ствара достижност коју скок домаћин нема и не може да поправи руту коју VPN никада није послао. Потврдите слушаоца тамо где заиста јесте, уместо да верујете тишини команде.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'

Трећи корак: задржите име HTTPS када је сокет локалан

Прегледање https://127.0.0.1:9443/ мења име TLS сервера и овлашћење апликације. Сертификат издат за portal.lab.example неће се валидирати према loopback адреси, а грешка која настане изгледа као покварен сертификат, а не као пречица прослеђивања. За тест из командне линије задржите прави URL и промените само дестинацију сокета. То ради --connect-to, а приручник за curl документује доле коришћени облик од четири поља.

curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/

Име остаје у URL-у, у TLS руковању и у заглављу Host, док TCP веза иде ка локалном слушаоцу. Опција без проксија задржава тест на овом прослеђивању уместо да дозволи конфигурисаном HTTP проксију да га пресретне, а задржавање провере сертификата укључене чини резултат смисленим.

Четврти корак: знајте шта једно прослеђивање не може да покрије

Једно TCP прослеђивање покрива један одредишни порт. Страници која преусмерава на друго име домаћина, учитава ресурсе са домаћина унутар приватне мреже или шаље на други порт потребно је сопствено прослеђивање, и сваком од њих је потребна иста провера политике као првом. Токови рада у прегледачу додају сопствене захтеве, јер прегледачу мора да се каже да пошаље право име на локални порт кроз конфигурацију проксија или локално мапирање. Зато успешан тест из командне линије не доказује да ће прегледач успети, иако доказује пут.

UDP, откривање SMB и пријављивање на домен уопште не пролазе кроз TCP прослеђивање. Ако је стварна потреба општи приступ мрежи, овај дизајн је погрешан алат, а подржани гејтвеј за даљински приступ је прави.

Пети корак: очистите и запишите

Зауставите сесију када тест заврши и потврдите да је слушалац нестао. Ако је изабрани порт већ био заузет, изаберите други неискоришћен loopback порт и ажурирајте URL, тест команду и белешку заједно, уместо да заустављате неповезану локалну услугу да бисте ослободили број. Остављање прослеђивања отвореног на лаптопу претвара дијагностику у неупражљиву услугу.

Запишите скок домаћина, прослеђену дестинацију, локални порт и ко је одобрио договор. Прослеђивање које постоји само у нечијој shell историји је једно рестартовање далеко од поновног испитивања, а следећа особа неће знати који је од три предуслова већ проверен.

Повезани чланци