Зачем вам нужно создавать простой двусторонний SSH-туннель?
В своей работе по системному администрированию Linux вы когда-либо оказывались в ситуации, когда вы не можете подключиться по SSH к любому из ваших серверов / хостов, которые могут находиться за брандмауэром, NAT или иным образом защищены от легкого доступа.
Чтобы получить доступ, вам потребуется перенастроить брандмауэр или создать VPN, что может привести к огромным накладным расходам только потому, что вам нужно время от времени выполнять несколько команд.
С двухсторонним туннелем SSH вы можете подключиться к любому месту назначения при одном условии, то есть возможности входа по ssh от места назначения к источнику.
Если вы можете сделать это, вы также можете отменить вход в систему от источника к месту назначения, даже если он находится за брандмауэром или NAT.
Как создать зашифрованный двухсторонний туннель SSH – пошаговые инструкции
В этом сценарии UserA желает подключиться с HostA с IP-адресом 204.55.6.77 к адресу за брандмауэром или NAT HostB с IP-адресом 156.78.4.56, на котором работает UserB.
Создайте SSH туннель
HostB~$ ssh -R 50505:localhost:22 UserB@204.55.6.77
HostA~$ ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* LISTEN 0 128 localhost:50505 *:* LISTEN 0 128 *:http *:* LISTEN 0 128 :::ssh :::* LISTEN 0 128 localhost:50505 :::* LISTEN 0 128 :::http
Используйте SSH-туннель для удаленного входа по SSH
Все, что осталось сделать, – это чтобы пользователь UserА использовал туннель SSH, доступный через локальный порт HostA 50505, для входа по SSH на HostB:
HostA~$ ssh UserA@localhost -p 50505