Какво представлява обратното SSH тунелиране? (и как да го използвам)

Имате нужда от SSH към недостъпен Linux компютър? Накарайте го да ви се обади, след което заровете тази връзка, за да получите своя собствена отдалечена SSH сесия. Ние ви показваме как.

Когато искате да използвате обратно тунелиране на SSH

Понякога отдалечените компютри могат да бъдат трудни за достъп. Сайтът, на който се намират, може да има строги правила за защитна стена или може би местният администратор е настроил комплекс Превод на мрежови адреси правила. Как да стигнете до такъв компютър, ако трябва да се свържете с него?

Нека установим някои етикети. Вашият компютър е локалният компютър, защото е близо до вас. Компютърът, към който ще се свържете, е отдалеченият компютър, защото е на различно място от вас.

За да се направи разлика между локалните и отдалечените компютри, използвани в тази статия, отдалеченият компютър се нарича „wdzwdz“ и работи с Ubuntu Linux (с лилави терминални прозорци). Локалният компютър се нарича „Sulaco“ и работи с Manjaro Linux (с жълти терминални прозорци).

Обикновено бихте запалили SSH връзка от локалния компютър и се свържете с отдалечения компютър. Това не е опция в мрежовия сценарий, който описваме. Наистина няма значение какъв е конкретният проблем с мрежата – това е полезно винаги, когато не можете да SSH директно към отдалечен компютър.

Но ако конфигурацията на мрежата от вашия край е лесна, отдалеченият компютър може да се свърже с вас. Само това обаче не е достатъчно за вашите нужди, защото не ви осигурява работеща сесия от команден ред на отдалечения компютър. Но това е начало. Имате установена връзка между двата компютъра.

  Вашето ръководство за отключване на силата на търсенето на прожектори в OS X

Отговорът се крие в обратното тунелиране на SSH.

Какво представлява обратното SSH тунелиране?

Обратното SSH тунелиране ви позволява да използвате тази установена връзка, за да настроите нова връзка от вашия локален компютър обратно към отдалечения компютър.

Тъй като оригиналната връзка дойде от отдалечения компютър към вас, използването й, за да отидете в другата посока, означава да я използвате „в обратна посока“. И тъй като SSH е защитен, вие поставяте защитена връзка в съществуваща защитена връзка. Това означава, че връзката ви с отдалечения компютър действа като частен тунел в оригиналната връзка.

И така стигаме до името „обратно SSH тунелиране“.

Как работи?

Обратното SSH тунелиране разчита на отдалечения компютър, използващ установената връзка, за да слуша за нови заявки за връзка от локалния компютър.

Отдалеченият компютър слуша на мрежов порт на локалния компютър. Ако открие SSH заявка към този порт, той препраща тази заявка за връзка обратно към себе си, надолу по установената връзка. Това осигурява нова връзка от локалния компютър към отдалечения компютър.

По-лесно е да се настрои, отколкото да се опише.

Използване на SSH обратно тунелиране

SSH вече ще бъде инсталиран на вашия компютър с Linux, но може да се наложи да стартирате SSH демона (sshd), ако локалният компютър никога преди не е приемал SSH връзки.

sudo systemctl start sshd

За да стартирате демона SSH всеки път, когато рестартирате компютъра си, използвайте тази команда:

sudo systemctl enable sshd

На отдалечения компютър използваме следната команда.

  5 най-добри инструменти и софтуер за наблюдение на паметта

Опцията -R (обратна) казва на ssh, че нови SSH сесии трябва да бъдат създадени на отдалечения компютър.
„43022:localhost:22“ казва на ssh, че заявките за връзка към порт 43022 на локалния компютър трябва да бъдат препратени към порт 22 на отдалечения компютър. Порт 43022 е избран, защото е така посочена като неразпределена. Не е специален номер.
[email protected] е потребителският акаунт, към който отдалеченият компютър ще се свърже на локалния компютър.

ssh -R 43022:localhost:22 [email protected]

Може да получите предупреждение, че никога преди не сте се свързвали с локалния компютър. Или може да видите предупреждение, когато данните за връзката се добавят към списъка с разпознати SSH хостове. Това, което виждате — ако има нещо — зависи от това дали някога са били правени връзки от отдалечения компютър към локалния компютър.

Ще бъдете подканени за паролата на акаунта, който използвате, за да се свържете с локалния компютър.

Имайте предвид, че когато връзката е осъществена, командният ред се променя от [email protected] да се [email protected]

Вече сме свързани с локалния компютър от отдалечения компютър. Това означава, че можем да му издаваме команди. Нека използваме командата who, за да видим данните за влизане на локалния компютър.

who

Можем да видим, че човекът с потребителския акаунт, наречен dave, е влязъл в локалния компютър и отдалеченият компютър се е свързал (използвайки същите потребителски идентификационни данни) от IP адрес 192.168.4.25.

Свързване към отдалечения компютър

Тъй като връзката от отдалечения компютър е успешна и се прослушва за връзки, можем да опитаме да се свържем с отдалечения компютър от локалния.

Отдалеченият компютър слуша порт 43022 на локалния компютър. Така че — донякъде противоинтуитивно — за да осъществим връзка с отдалечения компютър, ние молим ssh да направи връзка с локалния компютър, на порт 43022. Тази заявка за връзка ще бъде препратена към отдалечения компютър.

ssh localhost -p 43022

Получаваме подкана за паролата за потребителски акаунт, след което се свързваме към отдалечения компютър от локалния компютър. Нашият компютър Manjaro с радост казва: „Добре дошли в Ubuntu 18.04.2 LTS“.

  Как да намерите географска ширина и дължина в Apple Maps

Имайте предвид, че командният ред е променен от [email protected] да се [email protected] Постигнахме целта си да направим SSH връзка с нашия труднодостъпен отдалечен компютър.

Използване на SSH с ключове

За да бъде по-удобно свързването от отдалечения компютър към локалния компютър, можем да настроим SSH ключове.

На отдалечения компютър въведете тази команда:

ssh-keygen

Ще бъдете подканени за парола. Можете да натиснете Enter, за да игнорирате въпросите за парола, но това не се препоръчва. Това би означавало, че всеки на отдалечения компютър може да направи SSH връзка с вашия локален компютър, без да бъде оспорван за парола.

Три или четири думи, разделени със символи, ще направят здрава парола.

Вашите SSH ключове ще бъдат генерирани.

Трябва да прехвърлим публичния ключ на локалния компютър. Използвайте тази команда:

ssh-copy-id [email protected]

Ще бъдете подканени за паролата за потребителския акаунт, в който влизате, в този случай, [email protected]

Първият път, когато направите заявка за връзка от отдалечения компютър към локалния компютър, ще трябва да предоставите паролата. Няма да се налага да го въвеждате отново за бъдещи заявки за свързване, докато прозорецът на терминала остава отворен.

Не всички тунели са страшни

Някои тунели могат да бъдат тъмни и изкривени, но обратното SSH тунелиране не е твърде трудно за навигация, ако можете да поддържате връзката между отдалечения компютър и локалния компютър направо в главата си. След това го обърнете.