Введение
Иногда может возникнуть необходимость доступить свой домашний компьютер снаружи. Однако, большинство интернет-провайдеров предоставляют динамический IP-адрес, что осложняет задачу постоянного доступа к домашней сети. В этой статье мы рассмотрим, как использовать виртуальный сервер (VPS) и SSH туннелирование для создания стабильного доступа к вашему домашнему компьютеру через удобное доменное имя.
План действий
- Зарегистрировать доменное имя.
- Приобрести VPS с минимальными требованиями.
- Настроить подключение по SSH по сертификату без ввода пароля.
- Использование утилиты
autossh
для автоматического подключения к VPS. - Настройка службы для автоматического запуска подключения.
Шаг 1: Зарегистрировать доменное имя
Зарегистрируйте нужное вам доменное имя через любой удобный регистратор доменных имен. Убедитесь, что ваша доменная зона настроена корректно и привязана к IP-адресу вашего VPS.
Шаг 2: Приобрести VPS
Приобретите VPS у любого удобного вам провайдера облачных сервисов. Убедитесь, что ваш VPS имеет статический IP-адрес и доступен по SSH.
Шаг 3: Настроить подключение по SSH по сертификату без ввода пароля
Генерация ключей SSH на домашнем компьютере
- Сгенерируйте пару ключей SSH (public/private) на вашем домашнем компьютере, если они еще не созданы:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
При этом убедитесь, что вы установили пустой пароль для приватного ключа.
- Загрузите публичный ключ на VPS:
ssh-copy-id username@vps_ip_address
Настройка подключения по SSH с использованием приватного ключа
- Убедитесь, что вашему домашнему компьютеру можно подключаться к VPS без ввода пароля:
ssh -i ~/.ssh/id_rsa username@vps_ip_address
Шаг 4: Использование утилиты autossh
для автоматического подключения к VPS
Установка autossh
- На домашнем компьютере установите
autossh
:
sudo apt update
sudo apt install autossh
Настройка автоматического подключения с использованием autossh
- Создайте скрипт для запуска
autossh
. Например, создаем файл/usr/local/bin/start_autossh.sh
:
#!/bin/bash
autossh -M 20000 -f -N -R 5000:localhost:80 username@vps_ip_address -i ~/.ssh/id_rsa
- Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/start_autossh.sh
Шаг 5: Настройка службы для автоматического запуска подключения
Создание systemd сервиса
- Создайте файл конфигурации systemctl
/etc/systemd/system/autossh.service
:
[Unit]
Description=AutoSSH tunnel for VPS
After=network.target
[Service]
User=username
ExecStart=/usr/local/bin/start_autossh.sh
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
Включение и запуск службы
- Перезагрузите конфигурацию systemctl:
sudo systemctl daemon-reload
- Включите службу для автоматического запуска при загрузке:
sudo systemctl enable autossh.service
- Запустите службу:
sudo systemctl start autossh.service
Проверка работы службы
- Проверьте статус службы:
sudo systemctl status autossh.service
- Убедитесь, что туннель работает правильно:
ss -tuln | grep 5000
Остановка сервисов на VPS
- Перед запуском
autossh
можно остановить все процессы, которые слушают порт 5000 на VPS:
ssh -i ~/.ssh/id_rsa username@vps_ip_address "killall -9 $(lsof -ti :5000)"
Объединение всех действий
- Модифицируйте скрипт
start_autossh.sh
, чтобы он включал остановку процессов на VPS:
#!/bin/bash
ssh -i ~/.ssh/id_rsa username@vps_ip_address "killall -9 $(lsof -ti :5000)"
autossh -M 20000 -f -N -R 5000:localhost:80 username@vps_ip_address -i ~/.ssh/id_rsa
Теперь ваш домашний компьютер автоматически подключается к VPS с использованием SSH-туннеля, и служба перезапускается при необходимости. В случае отсутствия связи или сбоя туннеля autossh
самопроизвольно восстанавливает соединение.