Как я могу помочь кому-то (как бабуля) по SSH, кто находится позади маршрутизатора NAT?

Для помощи другим быстро, SSH очень полезен, особенно объединенный с Экраном GNU. Распространено, что пользователи находятся позади маршрутизатора NAT. Даже если пользователь может настроить маршрутизатор, он занимает время, чтобы помнить пароль, найти правильные опции, и т.д.

Так, что самый легкий путь состоит в том, чтобы помочь другим по SSH, если они находятся позади маршрутизатора NAT?

Я в настоящее время говорю, что люди для открытия терминала выполняют ниже команды и передают меня их IP от сайта как http://ip.appspot.com/:

sudo apt-get install openssh-server ssh-import-id && ssh-import-id lekensteyn

Очевидно, это не собирается работать, если они находятся позади маршрутизатора NAT или настроили персональный брандмауэр. Так, есть ли что-то как:

sshd --accept-help-from lekensteyn

Я не ищу альтернативы как Teamviewer, просто оболочка как SSH. Это должен быть открытый исходный код также.

14
задан 13 April 2017 в 05:24

4 ответа

Если Ваш собственный компьютер может принять соединения SSH, существует способ использовать технику что Pavlos G., связанный с без дополнительного компьютера.

Вам сначала нужно неимущее* пользователь, которого Ваш друг соединит как:

sudo adduser reverse --shell /bin/false

Скажите Вашему другу запускать туннель:

ssh -N -R 62222:localhost:22 reverse@lekensteyns-server

Затем на Вашем собственном компьютере (lekensteyns-server), запустите обратное соединение:

ssh -p 62222 localhost

* я не знаю достаточно о безопасности, чтобы смочь консультировать по вопросам создания соответственно неимущего пользователя. Это - вероятно, что-то, что должно быть покрыто отдельным вопросом.

13
ответ дан 23 November 2019 в 03:02

На основе Ваших определенных потребностей я был бы, вероятно:

  1. Попросите, чтобы они сказали мне пароль маршрутизатора
  2. Вход в систему и перенаправление портов установки для порта 22 только
  3. Подключение через SSH (или туннелирование SSH при необходимости в дополнительных открытых портах) и сделало задание.

Я также забыл, что можно попробовать реверс ssh туннель, хотя для этого решения технически нужен еще один - середина - компьютер для работы.

Больше информации может быть найдено здесь

2
ответ дан 23 November 2019 в 03:02

Я просто обычно создавал туннель IPv6 (из sixxs.net или he.net), если у них уже нет IPv6 и затем того способа, которым компьютер имеет статический адрес, и я не должен смешивать с NAT. Мне также нравится настраивать основанную на ключе аутентификацию (затем, они не должны говорить Вам свой пароль).

Sixxs имеет их собственный клиент, который Вы используете. Это работает позади почти любого NAT и автоматически обновляет, когда адрес IPv4 изменяется. У них есть инструкции относительно того, как настроить его, и это упаковывается для Ubuntu.

Электрическое использование урагана туннель, куда пакеты IPv6 отправляются как полезная нагрузка пакета IPv4. В отличие от Sixxs, не используется никакой TCP/UDP. Это означает, что NAT, Вы находитесь позади, должен поддерживать передающий ПРОТОКОЛ 41 (не порт), и только один компьютер позади NAT может использовать его. Программное обеспечение для использования туннеля как это встроено в Ubuntu.

Для HE я использую что-то вроде этого в /etc/network/interfaces:

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
     endpoint 216.218.226.238
     address  2001:470:a29f::2
     netmask  64
     ttl 64
     up ip -6 route add default dev he-ipv6
     down ip -6 route del default dev he-ipv6

Другая вещь, которую необходимо сделать, обновить конечную точку туннеля. Так как Вы не знаете, когда Внешние изменения IP, необходимо будет просто попытаться обновить конечную точку каждые несколько минут. Вы могли использовать что-то вроде этого и выполнить его от крона:

#!/bin/sh
echo -n "Hurricane Electric Proto-41 tunnel endpoint update: "
#(C) 2010 Erik B. Andersen This script is licensed under the latest version of the
# AGPL published by the Free Software Foundation at http://www.gnu.org/licenses/ .
####Set these for each different site#########
pass="passwordhere"
user_id="a765b8e2f474667dcb56e08c5f1aa05b"
tunnel_id="97817"
####Past here doesn't need to be changed######
wget -4 "https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=$(echo -n "${pass}" | md5sum | grep -o -E "[0-9a-fA-F]{32}")&user_id=${user_id}&tunnel_id=${tunnel_id}" -O /dev/null -o /dev/null --no-check-certificate
echo " Done"
2
ответ дан 23 November 2019 в 03:02

Вдоль лет я разработал GUI, чтобы сделать точно, что OP спрашивает... за исключением того, что он требует ssh доступа к третьему серверу с общедоступным IP, как предложено Pavlos. Можно найти здесь debian пакеты и инструкции:

http://pietrobattiston.it/reachme

Заметьте, что это (все еще) не может заботиться о первоначальной конфигурации - а именно, необходимо установить себя rsa ключи для соединения без пароля. После того, как настроенный, "reachthem" позволяет Вам видеть, соединен ли "reachme", и открыть ssh окружают/просматривают файловую систему/представление (экспериментальный) экран.

Очевидно, Вам не нужен третий компьютер, если Ваш компьютер сам имеет общедоступный IP, как в ответе ændrük. И ясно, преимущество GUI - то, что удаленный пользователь не должен вводить команду в терминал..., но часть этого преимущества потеряна, если удаленный пользователь должен установить reachme. Таким образом, я просто всегда устанавливаю и настраиваю reachme всем, на ком я устанавливаю Ubuntu.

0
ответ дан 23 November 2019 в 03:02

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

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