Я недавно установил Сервер 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-адрес.
В первую очередь, корректная команда: 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 или другой также, но я еще не настолько знаком с ними.
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, например:
По умолчанию в Ubuntu (Настольный) SSH не установлен.
можно установить его следующей командой в Терминале:
sudo apt-get install openssh-server
Это должно установить и запустить сервис сразу же.