Используйте Выход SSH для получения поступления SSH

Мой ISP не позволяет мне иметь статический IP-адрес. Как таковой я неспособен к удаленно SSH в моей домашней машине. Существует ли способ, которым я мог SSH со своей домашней машины на сервер и SSH в сервер от моего удаленного ноутбука и соединять эти два соединения мостом?

Удачи!

1
задан 22 April 2017 в 15:53

2 ответа

Я просто скопировать/вставить (немного измененный) часть ответа @b_laoshi отсюда:

В этом случае можно настроить туннель ssh от ComputerA-> ComputerB такой, он может туннелировать обратные соединения также.

При установлении соединения SSH ComputerA-> ComputerB, сделайте так с -R опция следующим образом:

ssh ComputerBUser@ComputerB -R 2222:localhost:22

где ComputerBUser имя пользователя для учетной записи на аутентифицируемом ComputerB и 2222 франко-порт на ComputerB. Мы будем использовать этот порт для обратного туннеля назад к ComputerA от ComputerB.

Теперь от ComputerB, можно дать scp команду следующим образом для копирования файлов с ComputerB-> ComputerA где ComputerAUser Ваше имя пользователя на ComputerA:

scp -P 2222 /path/to/file/on/ComputerB ComputerAUser@localhost:/path/to/drop/file/on/computerA

или

ssh -p 2222 ComputerAUser@localhost

Что происходит здесь?

Похоже, что мы просто говорим ComputerB передавать файл обратно себе, потому что мы являемся передающими localhost вместо ComputerA. Мы действительно говорим scp пасовать назад файл к ComputerB, но портировать 2222. Все соединения с портом 2222 на ComputerB передаются для портирования 22 (значение по умолчанию ssh порт) на ComputerA.

Таким образом, путем туннелирования назад по существующему соединению SSH, не имеет значения, что ComputerA находится позади брандмауэра NAT.

Править: Чтобы позволить устанавливать туннель SSH без потребности в активном окне терминала, можно добавить -N параметр (прежде чем -R) (как указано в ссылке, предоставленной @steeldriver). Кроме того, если Вы хотите автоматически установить постоянное фоновое соединение SSH, большая статья Erik Torgesta предоставляет Вам все необходимые шаги.

Связанные темы:

4
ответ дан 3 December 2019 в 06:38

Возможно, более простой способ, который я настроил на своем собственном сервере.

Мой сервер проверяет свой внешний IP-адрес каждые 15 минут (время между проверками настраивается cron). Затем он сравнивает его с последним IP-адресом и, если он изменился, отправляет мне новый IP-адрес. ,

Я нахожусь на моем телефоне в данный момент, но могу при желании отправить настройку, это действительно довольно просто и довольно надежно, за исключением странного поддельного электронного письма, когда сервер не может получить доступ к контроллеру ip.

Обновление - вот сценарий. Вам, очевидно, нужна работающая учетная запись электронной почты, лично у меня есть настроенная для отправки с выделенной учетной записи Gmail, используя это руководство

#bin/sh
IPADDRESS=$(curl https://wtfismyip.com/text)
if [ "$IPADDRESS" != "$(cat /home/will/scripts/.current_ip)" ]
then
dt=$(date)
echo "Your new IP address as of ${dt} is ${IPADDRESS} \r \r FTB" | mail -s "IP address change" emailforupdates@email.com
echo "$IPADDRESS" >| /home/will/scripts/.current_ip
echo "$dt $IPADDRESS" >> /home/will/scripts/.iphistory
fi

Я бы начал с touch .current_ip && touch .iphistory в каталог, в котором вы собираетесь хранить файлы. У него есть дополнительное преимущество, заключающееся в том, что он ведет учет изменений IP, хотя, честно говоря, я не нашел в нем особого смысла.

Настройте скрипт так, чтобы он выполнялся как задание cron так часто, как вам нравится. Это не очень ресурсоемкий.

1
ответ дан 3 December 2019 в 06:38

Другие вопросы по тегам:

Похожие вопросы: