Підключення до сервера Ubuntu через SSH зовні


25

Нещодавно я встановив Ubuntu Server 12.04 (Precision Pangolin) і маю намір використовувати його насамперед як файловий сервер. Я абсолютно нова в Linux, тому це досить велика крива навчання. Вчора мені вдалося налаштувати PuTTY на своїй машині Windows 7 за допомогою пари ключів SSH, щоб я міг управляти сервером Ubuntu зі свого робочого столу. Це добре працює за умови, що обидва машини знаходяться в одній мережі.

Що стосується мого ноутбука ( MacBook Air ), він не завжди може бути в одній мережі. Чи можна мати змогу підключитися до сервера Ubuntu зі свого ноутбука через SSH, коли він знаходиться в іншій мережі?

Я встановив демон avahi, щоб ім'я хоста для сервера транслювалося в локальній мережі та налаштовував маршрутизатор так, щоб він завжди призначав серверу однакову 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 зі свого ноутбука, існує ймовірність, що мій провайдер змінить мою зовнішню IP-адресу, що порушить зовнішнє з'єднання. Я хотів би мати можливість надійного підключення, тобто якщо мій провайдер змінить зовнішню IP-адресу, я все-таки зможу віддалено підключитися до сервера, не знаючи, що таке нова зовнішня IP-адреса.

Відповіді:


23

Перш за все, правильна команда: 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-адресу або вводить в Інтернет-сервіс зберігання даних, як-от Drobox.

Ось сценарій, який використовує мій друг:

    #!/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.xx

Альтернативні способи та інші рішення ОС:

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/


Дякую за це, я зараз буду обробляти пропозиції.
Езір

Добре, все, що мені потрібно було зробити, це переслати порт 22 на моєму маршрутизаторі до сервера, і він працює, велике спасибі. Чи є спосіб я вирішити другу частину свого питання щодо того, що моя зовнішня IP-адреса може змінитися? - Щойно побачив вашу редакцію, зараз прочитає.
Езір

Чи можете ви пояснити, як я можу переслати порт 22 свого маршрутизатора на сервер? Що це означає? Дякую!
xxx222

Це залежить від того, який у вас маршрутизатор, але зазвичай десь має бути сторінка налаштувань переадресації або брандмауера. Ось як це зробити на маршрутизаторі з OpenWRT: newspaint.wordpress.com/2012/08/26/… Більшість маршрутизаторів можна налаштувати, перейшовши на веб-переглядач 192.168.1.1 або аналогічну адресу 192.168.xx у своєму браузері, якщо ви ввімкнено та ж мережа, що і маршрутизатор.
KIAaze

3

За замовчуванням в Ubuntu (Desktop) SSH не встановлений.

Ви можете встановити її за допомогою наступної команди в Терміналі:

sudo apt-get install openssh-server

Слід встановити та запустити послугу відразу.


2
+1. Це спрацювало чудово, коли я спробував це. Мені вдалося перейти на машину Ubuntu відразу після запуску цієї команди (для Ubuntu 14.04 (Trusty Tahr), 64-розрядне настільне видання).
Пітер Мортенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.