У меня дома есть несколько машин, к которым я хотел бы получить доступ из школы, используя SSH и VNC. Для этого я дал им статические IP-адреса:
- 192.168.1.50: Windows
- 192.168.1.51: Ubuntu
- 192.168.1.52: Raspberry Pi / Raspbian
Я знаю, что SSH использует порт 22, поэтому я могу переадресовать этот порт на 192.168.1.51:22 на моем маршрутизаторе, но таким образом я не смогу подключиться к SSH к Raspberry Pi. Есть ли способ, которым я мог бы настроить это, чтобы иметь доступ к обеим машинам?
networking
ssh
port-forwarding
acourchesne
источник
источник
Ответы:
Если у вас есть IPv6, вам даже не нужна переадресация портов! Просто получите свой постоянный IPv6-адрес (на основе вашего MAC-адреса, так что он гарантированно останется прежним, если ваш провайдер не знает, как работает IPv6) и используйте его для туннелирования. Так как ваш IPv6-адрес является общедоступным и позволяет миру чтобы получить доступ к вам без необходимости проходить через локальный NAT, вам не нужно беспокоиться о включении переадресации портов в любом месте. Это будет "просто работать".
Тем не менее, обратите внимание, что IPv6 все еще не поддерживается на глобальном уровне, и для этого как домашнему, так и удаленному интернет-подключению необходим полностью работающий IPv6.
Тем не менее, если вы похожи на большинство людей и у вас есть только IPv4, есть еще способ! Некоторые маршрутизаторы позволяют перенаправлять определенные исходные порты на определенные порты назначения, например, так:
В этом примере порт
22
передаются непосредственно к моей машинеsheepdog
, в то время как порт292
перенаправляются на порт22
наcoyote
.Наконец, если ваш маршрутизатор не имеет этой функции, вы можете просто изменить порт, так как SSH не ограничивается только работой на порту
22
. Вы можете установить его на что угодно (это не используется).В
/etc/ssh/sshd_config
(вам нужен root для редактирования, поэтомуsudo nano /etc/ssh/sshd_config
) есть строка в верхней части файла:Измените это на то, что вы хотите:
Перезапустите сервер SSH
sudo service ssh restart
и перенаправьте порт на маршрутизаторе.Тем не менее, для этого случая использования я бы подумал, правильно ли делать SSH-туннели. Возможно, вам следует настроить выделенный VPN-сервер в вашей домашней сети? Это позволит вам получить доступ ко всей домашней сети из любого места, при условии, что у вас есть надлежащие учетные данные безопасности, необходимые для VPN. Кроме того, с VPN-трафиком немного меньше накладных расходов; обычно вам нужно только перенаправить один порт на одну машину.
источник
Простой способ решить эту проблему - сопоставить разные порты от вашего маршрутизатора до порта 22 вашей машины. Например, вы можете иметь следующие настройки на вашем маршрутизаторе (при условии, что ваш маршрутизатор имеет IP
1.2.3.4
)Затем, когда вы используете ssh, укажите порт, который вы хотите использовать, набрав
Теперь вы сможете подключиться ко всем своим машинам.
источник
Если вы знаете, что один из ваших компьютеров всегда включен, у вас также есть возможность использовать его в качестве ssh-прокси.
скажем, у вас есть настройка доменного имени для вашего внешнего IP-адреса (например, myhome.dyndns.com или что-то еще), что вы будете делать, это подключиться к одному компьютеру (скажем, raspberry всегда включен, и вы перенаправите порт с вашего маршрутизатора на это), ваши соединения ssh будут:
школа -> (роутер, здесь прозрачный) -> малина -> убунту или windows
теперь, в вашем ~ / .ssh / config в школе, добавьте строки:
Для подключения затем:
Теперь, если вы введете ssh ubuntu, компьютер сначала подключится к raspberry, а затем начнет сеанс ssh с компьютером ubuntu.
Я рекомендую вам, независимо от порта, который вы хотите перенаправить, отключить пароль в /etc/sshd.conf, чтобы разрешить вход только через ключ ssh. Таким образом, если вы настроите ключ на Rasberry и Ubuntu с параметром «ForwardAgent», вам нужно будет только разблокировать ключ, а затем пароль для подключения не требуется. Таким образом, даже если боты пытаются войти на ваш ssh, они никогда не смогут войти, так как вы запрещаете вход с паролем.
Бонус, это работает также с scp, scp foo ubuntu: / tmp / foo будет использовать ту же настройку без дополнительных параметров. Бонус 2, эта настройка не требует каких-либо изменений дома, если завтра вы и другой компьютер, просто скопируйте / вставьте код в вашу конфигурацию ssh, измените хост и ip, вот и все, не нужно открывать новый порт на маршрутизаторе
источник
Я делаю это - я оставляю rpi включенным и все время подключаюсь непосредственно к маршрутизатору (поскольку он самый дешевый в работе) и просто подключаюсь к нему по ssh, а затем отскакиваю от него к остальным - он никогда не требует особого внимания.
Также возможно использовать VNC / RDP с графическим интерфейсом через канал ssh, что-то интересное или переадресовать порт, который позволяет вам переходить на сервер на настольном компьютере, сохраняя его конфиденциальность.
Причина, по которой я добавил этот ответ, состоит в том, чтобы дать вам несколько предложений.
1) Используйте порт, отличный от 22. Вы можете оставить его на ПИ 22, но измените входящий порт на маршрутизаторе на более чем 10000 ... В противном случае вы будете получать от десятков до сотен атак в день - и как только вы Известно, что вы работаете с SSH-хостом, как только вы обнаружите эксплойт.
2) Используйте сертификаты вместо имени пользователя / пароля - полностью отключите логин / пароль.
3) Если ваш ip-адрес может измениться, используйте службу типа dyndns, чтобы получить DNS-хост (я использую noip, он бесплатный, и они поддерживают клиент Linux для обновления вашего ip-адреса - я думаю, вы можете просто apt-get on пи сейчас). Есть еще несколько компаний, которые предлагают это бесплатно.
4) Держите ваш пи (или что бы вы ни делали ssh) в актуальном состоянии (sudo apt-get update). Я полагаю, что ssh довольно хорошо проверен, но я также верил, что из https ...
источник
Сомневался, подойдет ли это лучше как комментарий, а не как ответ, но я все равно опубликую его здесь.
Некоторые вещи, о которых вы должны подумать, прежде чем делать это:
источник