SSH для домашних компьютеров

18

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

  • 192.168.1.50: Windows
  • 192.168.1.51: Ubuntu
  • 192.168.1.52: Малина Pi / Raspbian

Я знаю, что SSH использует порт 22, поэтому я могу переслать этот порт на 192.168.1.51:22 на моем маршрутизаторе, но таким образом я не смогу SSH для моей малины Pi. Есть ли способ, которым я мог бы установить это, чтобы иметь доступ к обеим машинам?

    
задан acourchesne 20.09.2016 в 03:02
источник

5 ответов

32

Если у вас есть 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 ), есть строка в верхней части файла:

# What ports, IPs and protocols we listen for
Port 22

Измените это на все, что вы хотите:

# What ports, IPs and protocols we listen for
Port 2992

Перезагрузите сервер SSH sudo service ssh restart и переместите порт на маршрутизаторе.

Однако, для этого случая использования, я бы подумал, нужно ли использовать туннели SSH. Возможно, вы должны настроить выделенный VPN-сервер в своей домашней сети? Это позволит вам получить доступ к домашней сети целиком из любого места, если у вас есть необходимые учетные данные безопасности, необходимые VPN. Кроме того, с VPN существует немного меньше накладных расходов; вам обычно нужно только переслать один порт для одной машины.

    
ответ дан Kaz Wolfe 20.09.2016 в 03:18
источник
19

Простым способом решения этой проблемы является сопоставление различных портов с вашего маршрутизатора с портом 22 ваших компьютеров. Например, в вашем маршрутизаторе могут быть следующие настройки (при условии, что ваш маршрутизатор имеет IP 1.2.3.4 )

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

Затем, когда вы используете ssh, укажите порт, который хотите использовать, набрав

$ ssh <username>@<router ip> -p <your port>

Теперь вы сможете подключиться ко всем вашим машинам.

    
ответ дан Liu Siyuan 20.09.2016 в 06:28
11

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

предположим, что у вас есть настройка имени домена для вашего внешнего IP-адреса (например, myhome.dyndns.com или что-то еще), то, что вы будете делать, - это подключение на одном компьютере (скажем, малина всегда вверх, и вы пересылаете порт из ваш маршрутизатор к нему), ваши ssh-соединения будут:

school - > (маршрутизатор, прозрачный здесь) - > малина - > ubuntu или windows

теперь, в вашем ~ / .ssh / config в школе, добавьте строки:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %[email protected]

Для подключения:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh [email protected] (login without password)

Теперь, если вы наберете ssh ubuntu, компьютер сначала подключится к малине, а затем запустит сеанс ssh на компьютер ubuntu.

Я рекомендую вам, независимо от того, какой порт вы выберете для переадресации, отключить пароль в /etc/sshd.conf, чтобы разрешить только вход через ssh. Таким образом, если вы настроите ключ на малине и на ubuntu, с параметром «ForwardAgent», вам нужно будет только разблокировать ключ, а затем пароль не требуется для подключения. Таким образом, даже если боты пытаются войти в ваш ssh, они никогда не смогут войти в систему, так как вы запретите вход в систему.

Бонус, это работает также с scp, scp foo ubuntu: / tmp / foo будет использовать ту же настройку без дополнительных параметров. Бонус 2, эта настройка не требует каких-либо изменений дома, если завтра вы и другой компьютер просто скопируйте / вставьте код в свою конфигурацию ssh, измените хост и ip, вот и все, нет необходимости открывать новый порт на маршрутизаторе

    
ответ дан potens 20.09.2016 в 14:47
4

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

Также возможно VNC / RDP - графический интерфейс по каналу ssh, любопытное развлечение или пересылка порта, который позволяет вам просматривать сервер на вашем настольном компьютере, сохраняя при этом его конфиденциальность.

Причина, по которой я добавил этот ответ, - это дать вам несколько предложений.

1) Используйте другой порт, чем 22. Вы можете оставить его 22 на PI, но измените входящий порт на вашем маршрутизаторе на что-то более 10 000 ... В противном случае вы получите десятки и сотни атак в день - и как только вы, как известно, запускаете SSH-хост, второй обнаруживается, что вы владеете.

2) Использовать сертификаты вместо имени пользователя / пароля - полностью отключить имя пользователя / пароль.

3) Если ваш IP-адрес может измениться, используйте службу типа dyndns, чтобы получить себе хост-сервер DNS (я использую noip, он бесплатный, и они поддерживают клиента Linux для обновления вашего IP-адреса - я думаю, вы можете просто apt- получить его на пи сейчас). Есть еще несколько других компаний, которые предлагают это бесплатно.

4) Держите свой pi (или что бы вы ни делали в ssh) до даты (sudo apt-get update). Я считаю, что ssh довольно хорошо проверен, но я также считал, что https ...

    
ответ дан Bill K 20.09.2016 в 17:09
3

Усомнился в том, что это будет лучше, чем комментарий, а не ответ, но я все равно отправлю его сюда.

Некоторые вещи, о которых вы должны подумать, прежде чем делать это:

  1. Вы откроете свои системы в Интернете, так что вам лучше убедиться, что они хорошо исправлены, а ваша конфигурация безопасности упрочнена (например, не разрешайте вход root и используйте паб-ключи вместо паролей).
  2. Ваш общедоступный IP-адрес (см. whatismyip.com) может измениться, в зависимости от вашего интернет-провайдера он может меняться ежедневно или почти никогда. Это означает, что вам нужно будет найти способ узнать свой публичный IP-адрес. Вы можете ежедневно посещать whatismyip.com из своей домашней сети, создавать приложения или использовать Dynamic DNS (DynDNS) для сопоставления изменяющегося публичного IP-адреса с статическим доменным именем.
  3. Если вы хотите использовать IPv6 для обхода всех проблем, связанных с IPv4 и NAT, вам понадобятся ваши устройства, маршрутизатор, интернет-провайдер, ... для IPv6. Есть некоторые службы, которые могут помочь вам, когда ваш интернет-провайдер не поддерживает IPv6, но ваши устройства и маршрутизатор должны будут говорить об этом в любом случае.
  4. Чем больше портов и устройств вы открываете в Интернет, тем больше становится ваша область атаки. Я бы предложил использовать скачок в вашей сети и только разрешить доступ SSH к этому устройству из Интернета. Скамья была бы в основном одной очень закаленной системой, которую вы переносите через маршрутизатор в Интернет. После подключения к этому ядру вы сможете через SSH подключиться к своей внутренней сети. В прыжке в коробке могла бы быть другая малина Pi. Я бы предложил использовать специализированное устройство, чтобы иметь возможность затвердеть его как можно больше (среди прочего, запустив как можно меньше сервисов).
  5. (4a) Вместо того, чтобы использовать скачок в SSH, вы также можете настроить VPN-сервер, который позволяет вам просматривать домашнюю сеть со своего устройства в школе (если разрешены исходящие VPN-соединения).
ответ дан BlueCacti 20.09.2016 в 10:25