5

У меня есть ПК с Windows за NAT/Firewall дома и ПК с Windows за NAT/Firewall на работе. ни один из компьютеров не имеет публично видимого IP-адреса. На каждом из компьютеров я использую виртуальную машину Ubuntu в VirtualBox.

Мои ИТ-специалисты на работе не позволят мне подключить SSH извне к моей машине с Windows или к виртуальной машине Ubuntu, работающей на этой машине, и не откроют никакие порты, чтобы сделать мою машину доступной, а также не предоставят мне публично видимый IP-адрес для моей Windows ПК или Ubuntu VM. Но я могу использовать SSH (как я часто это делаю для управления инстансами Amazon EC2).

Я хотел бы использовать SSH с моей (неадресуемой) домашней машины на мою (не адресуемую) рабочую машину, чтобы я мог запускать программное обеспечение на своей рабочей машине из дома. Все решения, которые я нашел в Интернете, требуют, чтобы одна из виртуальных машин была адресуема по сети, но ни одно из них не решает проблему, когда обе машины не адресованы. Я готов потратить несколько долларов, чтобы арендовать дешевый сервер Digital Ocean для связи между виртуальными машинами Ubuntu.

Есть ли способ, которым я могу настроить набор SSH-туннелей между моими виртуальными машинами Ubuntu и внешним сервером Digital Ocean, что сделает мою виртуальную машину Ubuntu на работе адресуемой через SSH из моей виртуальной машины Ubuntu дома? Я готов сделать эту работу, настроив SSH-туннель от каждой виртуальной машины Ubuntu до (адресуемого) сервера Digital Ocean (с командой SSH, исходящей от виртуальной машины Ubuntu).

3 ответа3

2

Вы можете сделать это легко, без каких-либо затрат.

1) Дома, получите (бесплатно) днс с no-ip.com. Вам будет дано имя как

  my_name.no-ip.biz

2) Настройте его либо на своем роутере, либо на компьютере; таким образом, даже если ваш провайдер изменит ваш IP-адрес, вышеприведенное прозвище всегда указывает на ваш дом. На сайте no-ip.com есть инструкции, как это сделать.

3) в вашем роутере форвард порты 6521 и порт для ssh (2222?) на ваш компьютер.

4) На работе: настройте обратный туннель к названию выше, сначала с помощью ssh, и просто проверьте, работает ли он;

5) Теперь загрузите autossh для вашего дистрибутива, небольшую оболочку, которая использует порт 6521 (вот почему!) проверить, что соединение все еще активно, и если это не так, оно убивает работающий экземпляр ssh и запускает новый.

Как правило, я пишу исполняемый файл с именем auto с этим содержимым:

 #!/bin/sh
 /usr/lib/autossh/autossh -M 6521 -f -p 2222 -2 -N -R 8400:localhost:22 my_name@no-ip.biz -i /home/myname/.ssh/id_rsa

Это устанавливает ssh- соединение без пароля (см. Использование криптографического ключа ** id_rsa) без терминала (-N), в протоколе 2 (-2), используя порт 6521, чтобы проверить, что соединение все еще активно, и перенаправляя на мой В домашнем порту 22 все, что отправляется на порт 8400 на работе.

Я поставил эту строку

   su myname -c /home/myname/bin/auto

выполнить исполняемый файл auto в /etc/rc.local автоматически при загрузке, как я, а не root. Теперь я могу подключиться к своему рабочему ПК с помощью команды:

   ssh -Y myname_at_work@localhost -p 8400 -i /home/myname/.ssh/id_rsa_work

где я теперь должен использовать пароль без пароля для работы. Я обнаружил, что эта связь всегда, всегда на связи. Действительно удовлетворительно.

1

Если они это позволят, вы можете попробовать что-то вроде hamachi (я использую платный logmein hamachi), чтобы обе машины существовали в частном VPN только между собой.

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

0

Если вы предпочитаете использовать цифровой океанский сервер, на который вы ссылаетесь, вместо Hamachi и т.п., я предлагаю вам взглянуть на OpenVpn. Настройте сервер do в качестве сервера, а компьютеры в качестве клиентов и убедитесь, что вы разрешаете клиентам связываться друг с другом, и все готово. Затем вы получаете доступ к вашему рабочему компьютеру по его IP-адресу vpn.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .