Обратный 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