Используйте исходящий SSH для приема входящего SSH

Я хорошо разбираюсь в старой машине - используйте USB-накопитель Ubuntu и нажмите «попробуйте без установки», чтобы загрузить систему в память, чтобы вы могли понять, как работают все устройства.

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

6 ответов

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

В этом случае вы можете настроить свой туннель ssh из ComputerA -> ComputerB, чтобы он мог также туннелировать обратные соединения , При установлении ssh-соединения ComputerA -> ComputerB, сделайте это с помощью опции -R следующим образом:
ssh ComputerBUser@ComputerB -R 2222:localhost:22
, где ComputerBUser является именем пользователя для учетной записи на компьютере, прошедшего проверку подлинности, и 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.

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

3
ответ дан 22 May 2018 в 23:20
  • 1
    Вы, сэр, сделали мой день. Благодаря @b_laoshi и к удивительным людям, которые думали об этом эпическом краевом деле. Моя неродственность была вознаграждена. – Philippe Hebert 22 April 2017 в 16:17
  • 2
    Еще один маленький вопрос: есть ли способ запустить обратный туннель ssh user@host -R 2222:localhost:22 в качестве фонового процесса и все еще иметь возможность ssh на компьютере A с компьютера B? Я хотел бы установить соединение из загрузки автоматически – Philippe Hebert 22 April 2017 в 17:20
  • 3
    @PhilippeHebert, я никогда не пробовал это. Не могли бы вы попробовать, и уточните ответ, если вы преуспеете. – pa4080 22 April 2017 в 17:31

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

В этом случае вы можете настроить свой туннель ssh из ComputerA -> ComputerB, чтобы он мог также туннелировать обратные соединения , При установлении ssh-соединения ComputerA -> ComputerB, сделайте это с помощью опции -R следующим образом: ssh ComputerBUser@ComputerB -R 2222:localhost:22 , где ComputerBUser является именем пользователя для учетной записи на компьютере, прошедшего проверку подлинности, и 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.

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

3
ответ дан 18 July 2018 в 14:28

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

В этом случае вы можете настроить свой туннель ssh из ComputerA -> ComputerB, чтобы он мог также туннелировать обратные соединения , При установлении ssh-соединения ComputerA -> ComputerB, сделайте это с помощью опции -R следующим образом: ssh ComputerBUser@ComputerB -R 2222:localhost:22 , где ComputerBUser является именем пользователя для учетной записи на компьютере, прошедшего проверку подлинности, и 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.

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

3
ответ дан 24 July 2018 в 20:24

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

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

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

Обновление - вот сценарий. Вам, очевидно, нужна работающая учетная запись электронной почты, которую я лично установил для отправки из выделенной учетной записи 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 в каталоге, re собирается хранить файлы. У этого есть дополнительное преимущество хранения записи изменений IP, хотя я не нашел много пользы для этого, чтобы быть честным.

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

1
ответ дан 22 May 2018 в 23:20
  • 1
    Да, Уилл, было бы неплохо, если бы вы предоставили более подробную информацию. – pa4080 22 April 2017 в 18:18
  • 2
    @SpasSpasov Я обновил свой ответ с помощью своего сценария. Там может быть более элегантный способ сделать это, но он работает. – Will 22 April 2017 в 18:32
  • 3
    Это хорошо, но в моем случае это не работает, поскольку мой интернет-провайдер не предоставляет мне статический IP-адрес, доступ к которому я могу получить. Я предполагаю, что IP, которому я даю, является IP-адресом коммутатора / маршрутизатора где-то в их системах, и у меня есть внутренний IP-адрес, который я не могу получить – Philippe Hebert 23 April 2017 в 04:40
  • 4
    @PhilippeHebert, это причина моего сценария. У меня тоже нет статического ip. Скрипт регулярно проверяет ваш IP-адрес и электронную почту, если он изменился. Это хорошо работает для меня в течение 2 лет (хотя мне пришлось изменить сервис, который я использовал для проверки своего ip, поскольку старый не дал ответа). Онлайн-проверки ip-адресов возвращают ваш общедоступный ip, который вам нужен для доступа к вашей системе из-за пределов вашей сети. – Will 23 April 2017 в 04:48
  • 5
    Интересно, что он возвращает адрес IPv6. Welp, я бы использовал его, но мой провайдер VPN не поддерживает IPv6: / – Philippe Hebert 23 April 2017 в 14:43

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

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

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

Обновление - вот сценарий. Вам, очевидно, нужна работающая учетная запись электронной почты, которую я лично установил для отправки из выделенной учетной записи 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 в каталоге, re собирается хранить файлы. У этого есть дополнительное преимущество хранения записи изменений IP, хотя я не нашел много пользы для этого, чтобы быть честным.

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

1
ответ дан 18 July 2018 в 14:28

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

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

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

Обновление - вот сценарий. Вам, очевидно, нужна работающая учетная запись электронной почты, которую я лично установил для отправки из выделенной учетной записи 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 в каталоге, re собирается хранить файлы. У этого есть дополнительное преимущество хранения записи изменений IP, хотя я не нашел много пользы для этого, чтобы быть честным.

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

1
ответ дан 24 July 2018 в 20:24
  • 1
    Да, Уилл, было бы неплохо, если бы вы предоставили более подробную информацию. – pa4080 22 April 2017 в 18:18
  • 2
    @SpasSpasov Я обновил свой ответ с помощью своего сценария. Там может быть более элегантный способ сделать это, но он работает. – Will 22 April 2017 в 18:32
  • 3
    Это хорошо, но в моем случае это не работает, поскольку мой интернет-провайдер не предоставляет мне статический IP-адрес, доступ к которому я могу получить. Я предполагаю, что IP, которому я даю, является IP-адресом коммутатора / маршрутизатора где-то в их системах, и у меня есть внутренний IP-адрес, который я не могу получить – Philippe Hebert 23 April 2017 в 04:40
  • 4
    @PhilippeHebert, это причина моего сценария. У меня тоже нет статического ip. Скрипт регулярно проверяет ваш IP-адрес и электронную почту, если он изменился. Это хорошо работает для меня в течение 2 лет (хотя мне пришлось изменить сервис, который я использовал для проверки своего ip, поскольку старый не дал ответа). Онлайн-проверки ip-адресов возвращают ваш общедоступный ip, который вам нужен для доступа к вашей системе из-за пределов вашей сети. – Will 23 April 2017 в 04:48
  • 5
    Интересно, что он возвращает адрес IPv6. Welp, я бы использовал его, но мой провайдер VPN не поддерживает IPv6: / – Philippe Hebert 23 April 2017 в 14:43

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

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