1

Одна из моих коробок Debian не имеет графического интерфейса. Как подключиться к нему через командную строку извне (например, AnyDesk, Teamviewer и т.д.)?

Я могу использовать SCP и SSH для доступа к этому компьютеру, пока я нахожусь в сети офиса. Но как я могу получить доступ из моего дома? Динамический DNS (DDNS или DynDNS) не применим в моей настройке, поскольку сетевой поставщик не назначает общедоступный IP-адрес для порта WAN маршрутизатора

Публичный IP и Маршрутизатор WAN IP отличается

4 ответа4

4

Обратный SSH твой друг. Вам нужен SSH-сервер, чтобы это работало. Я дам вам два подхода к этому, первый предполагает, что вы можете открыть и запустить SSH-сервер со своей машины дома. Я предоставлю способ, который пытается автоматически переподключаться ежечасно, чтобы ваш компьютер не всегда был подключен к сети. Поскольку иногда это может быть либо невозможно, либо затруднительно, я добавлю и более простое и безопасное решение, которое требует наличия Linux-VPS. Обычно они составляют всего 2 доллара в месяц.

Решение 1 - Использование только вашего ПК дома - Предполагая статический IP:

Подготовка на сервере Debian:

Я предполагаю, что у вас установлен и запущен cron . Создайте новый файл в /etc/cron.hourly со следующим содержимым: (не забудьте chmod +x файл!)

#!/bin/bash
cstate=$(netstat -na | grep "tcp" | grep "<IP-of-home-machine>:22" | tr -s " " | cut -d " " -f 6 | head -n 1)
cdate=$(date "+%Y-%m-%d %H:%M:%S")
if [[ $cstate == "ESTABLISHED" ]] || [[ $cstate == "TIME_WAIT" ]]
then
    echo "[$cdate] SSH connection up. ($cstate)" >> /var/log/check-ssh-relay.log
else
    echo "[$cdate] SSH connection broken. ($cstate) Reconnecting..." >> /var/log/check-ssh-relay.log
    ssh -N -f -R 12122:localhost:22 <username>@<IP-of-home-machine>
fi

Это будет проверять ежечасно, если соединение установлено и пытается повторно подключиться, если это не так. Полезно, когда ваш компьютер дома не всегда включен. Он записывает информацию журнала в /var/log/check-ssh-relay.log . Аутентификация выполняется с помощью SSH-ключей, поэтому убедитесь, что вы правильно настроили эту настройку заранее.

На вашем компьютере дома:

Если вы правильно настроили openssh-сервер, все что вам нужно сделать сейчас:

$ ssh <server-username>@localhost -p 12122

Чтобы создать соединение SSH. SCP, SFTP и co. тоже работает конечно.

Решение 2 - Использование другого VPS в качестве реле:

Я использую это решение лично. Главным образом потому, что у меня нет статического IP дома.

Подготовка на сервере Debian:

Точно так же, как в решении 1, за исключением того, что вместо <IP-of-home-machine> вы используете здесь IP-адрес VPS.

Подготовка на VPS:

Все, что вам нужно сделать, это запустить следующую команду от имени пользователя root:

$ ssh -g -f -N -L 0.0.0.0:13122:localhost:12122 root@localhost

Здесь -g важен, чтобы разрешить глобальные входящие соединения для этой переадресации порта.

На вашем ПК дома (или буквально где угодно):

Просто подключитесь к вашему VPS, используя порт 13122 (как указано выше):

$ ssh <username>@<VPS-IP> -p 13122
2

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

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

см. https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work

2

Вы можете настроить сервер OpenVPN в своем офисе (при условии, что вы можете перенаправить порт из вашей сети в общедоступную глобальную сеть), подключить к нему свой блок без графического интерфейса пользователя (как ответ Baldrickk; обратное туннелирование), а затем ваш сервер должен быть возможность SSH в блок без графического интерфейса, наряду с любыми другими службами, работающими на этом блоке.

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

2

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

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