SSH Tunneling DigitalOcean Users

Submitted by admin on Mon, 05/08/2023 - 10:01

1. Права доступа, юзеры

на клиентских машинах генерируем свой клиентский ключ RSA
client1# ssh-keygen -t rsa

(добавляем ключ ssh-add, если не получилось,
то запускаем ссх-агент
eval $(ssh-agent)
)

на ssh сервере создадим юзера для наших подключений (чтобы не давать рут доступа будет юзер с минимальными правами)
adduser tpsproxy

на сервере временно включаем доступ по паролю
nano /etc/ssh/sshd_config
в файле:
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes #toopro temp yes while config
перегружаем sshd чтобы изменения вступли в силу
systemctl restart sshd

на клиенте придется один раз войти с паролем, при копировании ключа
ssh-copy-id tpsproxy@sshproxy.yourdomain.com

на клиенте прописываем что клиенский ssh-клиент будет передавать свой локальный (localhost) порт 22 (чтобы можно было к нему подключиться) на сервер sshproxy.yourdomain.com в виде порта 11262 (например). наш прокси ssh-сервер ыфступает в роли как раз сервера, так как к нему подключается по 22 порту наш клиент
autossh -M 0 -fNg -R 11262:localhost:22 tpsproxy@sshproxy.yourdomain.com

на сервере проверяем, появилось ли соединение
netstat -l
видим в списке
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 sshproxy.yourdomain.com:11262 *:* LISTEN
похоже, что все ок, но для проверки можно также с ssh-сервера подключиться к этому клиенту:
ssh root@localhost -p11262
и мы оказываемся в клиенте, несмотря на то, что он за NAT и не имеет статического IP-адреса

========================

Настраиваем на клиенте постоянное соединение
на клиенте пишем сервис (ServerAliveInterval (30сек) and ServerAliveCountMax (3 раза) will help to watch for connection stable - меняем в файле ssh_config (НЕ sshd))
sudo nano /etc/systemd/system/tooprossh22.service
содержимое

[Unit]
Description=create reverce tunnel from this client to centeral ssh-server
After=network-online.target ssh.service

[Service]
User=toopro
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -Ng -R 11262:localhost:22 tpsproxy@sshproxy.yourdomain.com
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

обновис список сервитсов
sudo systemctl daemon-reload

и можно запускать сервис
sudo systemctl start tooprossh22
sudo systemctl status tooprossh22

на сервере теперь мы должны увидеть что клиент подключился
если все ок, мы можем включить его в автозапуск
sudo systemctl enable tooprossh22