SSH Tunneling DigitalOcean Users

Submitted by Too on Tue, 05/04/2021 - 15:43

Переносим наши тунели на дигиталокеан. Коротко: 1. прописываем ip нашего сервера в домен типа: sshproxy.yourdomain.com (это позволит при изменении ip нашего проксирующего сервера сменить ip этого домена и все клиенты смогут найти новый айпишник) 2. создаем юзера на ssh сервере и даем доступы по rsa ключам, без пароля 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