Соединение с сервером Ubuntu через SSH внешне

Я недавно установил Сервер Ubuntu 12.04 (Точный Ящер) и намереваюсь использовать его, прежде всего, в качестве файлового сервера. Я абсолютно плохо знаком с Linux, таким образом, это - довольно большая кривая обучения. Вчера я смог настроить PuTTY на своей машине Windows 7 с помощью пары ключей SSH так, чтобы я мог администрировать Сервер Ubuntu от своего рабочего стола. Это хорошо работает при условии, что обе машины находятся в той же сети.

В случае моего ноутбука (MacBook Air) это не могло бы всегда быть в той же сети. Действительно ли возможно смочь соединиться с сервером Ubuntu от моего ноутбука через SSH, когда это находится в другой сети?

Я установил avahi демона так, чтобы имя хоста для сервера было широковещательно передано на LAN и настроило маршрутизатор так, чтобы это всегда присваивало тот же IP-адрес серверу. Кроме этого единственной вещью, которую я установил на сервере, является OpenSSH, где я отключил аутентификацию по паролю так, чтобы можно было только соединить использование пары ключей.

Я думал, что смогу сделать что-то вроде этого от терминала на моем ноутбуке:

ssh my.external.ip.address user@hostname.local

Когда я пробую ту команду, я получаю ошибку:

ssh: подключите к хосту my.external.ip.address порт 22: операция приведена к таймауту

Я также попробовал

ssh my.external.ip.address user@servers.local.ip.address

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

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

25
задан 25 May 2015 в 03:25

2 ответа

В первую очередь, корректная команда: ssh user@my.external.ip.address

И маршрутизатор должен быть настроен для передачи порта SSH 22 локальному IP-адресу сервера.

Для дальнейшей отладки:

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

2) Проверьте, что сервер SSH работает на Вашем сервере

3) Использовать ping, ssh -v при соединении и взгляд на /var/log/auth.log отлаживать дальнейшие проблемы соединения.

1) На Вашем маршрутизаторе: следуйте особым указаниям маршрутизатора

На Вашем сервере: sudo ufw status (если Вы не используете другое средство конфигурирования брандмауэра), или sudo iptables -L (общий метод, но комплексный выход)

К открытому порту 22: sudo ufw allow 22

cf https://help.ubuntu.com/12.04/serverguide/firewall.html

2) Проверьте, что это установлено: dpkg -l openssh-server

Проверка это работает: service ssh status или ps aux | grep sshd

3) На соединяющемся клиенте:

  • ping my.external.ip.address
  • ssh -v user@my.external.ip.address

На сервере:

  • sudo less /var/log/auth.log

Можно проверить журналы маршрутизатора также при необходимости.

Вот сканер портов онлайн: https://www.grc.com/x/ne.dll? bh0bkyd2

Я думаю, что можно использовать инструменты как nmap или другой также, но я еще не настолько знаком с ними.

Контакт с изменяющимся внешним IP-адресом:

1) Получите dynDNS или подобную учетную запись: http://dyn.com/dns/

Списки динамических поставщиков DNS:

2) Другое решение, должен настроить crontab задание, которое регулярно отправляет Вам по почте Ваш внешний IP-адрес или вставляет на службу онлайн-хранилища как Dropbox.

Вот сценарий, который использует мой друг:

    #!/bin/bash
    # Bash script to get the external IP address
    MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|\1| p')
    echo "My IP address is: $MYWANIP"

    IPold=$(cat /home/USER/Dropbox/test.txt)
    echo "Previous IP Address: $IPold"

    if [[ $IPold != $MYWANIP ]] ;
    then
      echo "New IP"
      rm /home/USER/Dropbox/test.txt
      echo $MYWANIP >> /home/USER/Dropbox/test.txt;
      echo $MYWANIP;
    else
      echo "Same IP";
    fi

    # example crontab entry:
    ## m h  dom mon dow   command
    ## */10 * * * * /home/USER/Dropbox/test_ip.sh

Перенаправление портов маршрутизатора:

1) Во-первых, выясните локальный IP-адрес своего маршрутизатора путем выполнения:

ip route | grep default

Это обычно - что-то как 192.168.x.x.

Альтернативные пути и другие решения ОС:

2) Используя любой компьютер, подключенный локально к маршрутизатору, получите доступ к IP, найденному ранее, т.е. с помощью http://192.168.1.1, например. Это должно поднять интерфейс конфигурации маршрутизатора.

3) Следующие шаги варьируются в зависимости от Вашего маршрутизатора. Вот то, как это сделано на маршрутизаторе с OpenWRT, например:

https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/

23
ответ дан 23 November 2019 в 01:14

По умолчанию в Ubuntu (Настольный) SSH не установлен.

можно установить его следующей командой в Терминале:

sudo apt-get install openssh-server

Это должно установить и запустить сервис сразу же.

3
ответ дан 23 November 2019 в 01:14

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

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