Back-connect & Использование screen на удалённых машинах

Feb 18, 2013 20:27

Back-connect для админа
Back-connect позволяет работать с удаленной машиной даже если она закрыта фиреволлом/шлюзом. Есть только одна сложность: канал передачи данных должен инициироваться удаленной машиной (к нашей локальной).

Можно сделать это через NetCat:
1. на локальной машине: nc -l -n -v -p 8080
2. на удаленной: nc -e /bin/sh www.hostname.com 8080

Или через SSH:
1. на удаленной: ssh -R 2222:localhost:22 user@www.hostname.com
2. на локальной: ssh -p 2222 user@localhost

(c) http://quiteusefulnotes.blogspot.ru/2009/03/back-connect.html

Использование screen на удалённых машинах
Есть такая штука: screen. Программа создавалась, чтобы запускать несколько терминальных сессий внутри одного терминала. Надобность в такой возможности резко снизилась в связи с широким распространением эмуляторов терминала с поддержкой вкладок (вроде Gnome Terminal). Впрочем, до сих пор может быть полезна на удалённых машинах.

Однако есть у screen и другое полезное свойство: возможность отсоединять виртуальные сеансы от физического терминала и подсоединять к другому. Это, в частности, позволяет запускать долгоиграющие процессы на удалённых машинах, без необходимости быть постоянно на них залогиненным.

Способ использования такой:

1. зайти на удалённую машину (по ssh)
2. запустить там screen
3. запустить некий долгий процесс внутри сессии screen
4. отсоединить сессию screen, нажав CTRL-A и затем d (вообще, все внутренние команды screen начинаются с CTRL-A, например, CTRL-A + ? покажет краткую справку)
5. выйти из удалённой системы (всё запущенное внутри screen продолжит работать)
6. уйти обедать, лечь спать, уехать в отпуск, заняться другими делами
7. когда захочется, войти повторно на удалённую машину, и подсоединиться к уже запущенной сессии screen, набрав screen -r.

Таким же образом можно запускать screen и на локальной машине. Это позволит, например, уменьшить количество одновременно открытых терминалов, а также позволит спокойно перезапускать иксы, не опасаясь за то, что какой-то работающий в фоне процесс может прерваться.

Дополнение: Как заметил в комментариях Ivan A-R, на одной машине можно открыть несколько разных сессий screen:

ssh ...
screen -S wget
[Ctrl-A d]
screen -S backup
[Ctrl-A d]
exit

ssh ...
screen -r backup
[Ctrl-A d]
screen -r wget

(c) http://s.arboreus.com/2008/01/screen.html

Автоматический SSH туннель с машины за NAT (клиент) на сервер

s# - root на server
c# - root на client

Добавить пользователя и группу на сервере
s#useradd -m -s /bin/bash backssh
Сгенерировать клиентский ключ на клиенте
c#ssh-keygen
Скопировать ключ на сервер
c#scp ~/.ssh/id_rsa.pub backssh@server:~/client_key.pub
Добавить ключ клиента в папку пользователя
s#mkdir /home/backssh/.ssh
s#cat /home/backssh/client_key.pub >> /home/backssh/.ssh/authorized_keys
На всякий случай выставить правильные права доступа
s#chown -R backssh:backssh /home/backssh/.ssh
s#chmod 644 /home/backssh/.ssh/authorized_keys
Запретить пользователю командную оболочку
#usermod -s /bin/true backssh
Создать туннель
c#autossh -M 0 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -N -R 51005:127.0.0.1:22 backssh@server

WARNING!
Прежде чем пользоваться обратным туннелем убедитесь что в вашем /etc/ssh/sshd_config стоит опция "GatewayPorts no", иначе обратный порт (в нашем случае 51005) будет виден снаружи - что в некоторых случаях опасно!

ssh, tricks, shell, linux, command

Previous post Next post
Up