удалённый SSH

Настройка, программирование, распределённые вычисления

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 18 окт 2019, 22:30

Краткая справка по очень большому набору команд подключения SSH туннелей в самых разнообразных случаях - Практические советы, примеры и туннели SSH:
9 января 2019 в 16:44
SSH socks-прокси
Туннель SSH (переадресация портов)
SSH-туннель на третий хост
Обратный SSH-туннель
Обратный прокси SSH
Установка VPN по SSH
Копирование ключа SSH (ssh-copy-id)
Удалённое выполнение команд (неинтерактивно)
Удалённый перехват пакетов и просмотр в Wireshark
Копирование локальной папки на удалённый сервер по SSH
Удалённые приложения GUI с переадресацией SSH X11
Удалённое копирование файлов с помощью rsync и SSH
SSH через сеть Tor
SSH к инстансу EC2
Редактирование текстовых файлов с помощью VIM через ssh/scp
Монтирование удалённого SSH как локальной папки с SSHFS
Мультиплексирование SSH с помощью ControlPath
Потоковое видео по SSH с помощью VLC и SFTP
Двухфакторная аутентификация
Прыжки по хостам с SSH и -J
Блокировка попыток брутфорса SSH с помощью iptables
SSH Escape для изменения переадресации портов

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 09 янв 2020, 13:04

Q: Как запускать по SSH одиночную команду или целые группы команд?
A: SSH: Удаленный Запуск Команд или Скрипта — Linux
Posted on Вторник Декабрь 27th, 2016

Код: Выделить всё

ej@ACER:~$ ssh olej@185.178.47.95 'cd ~; pwd; du -hs; ls -l'
olej@185.178.47.95's password: 
/home/olej
20K	.
итого 0

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 09 янв 2020, 13:46

Q: Как удалённо запускать команды на сервере в фоновом режиме (так, чтобы возврат из команды происходил сразу)?
A: Опция (ключ) -f команды ssh.

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/org.doc$ ssh -f -l olej 185.178.47.95 'speedtest-cli'
olej@185.178.47.95's password: 
olej@ACER:~/2020_WORK/rus.linux.net.hist/org.doc$ Retrieving speedtest.net configuration...
Testing from TimeWeb Ltd. (185.178.47.95)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Orange Business Services, Russia & CIS (Moscow) [1.61 km]: 13.085 ms
Testing download speed................................................................................
Download: 161.67 Mbit/s
Testing upload speed......................................................................................................
Upload: 4.12 Mbit/s
Запустить в фоновом режиме выгрузку файла с сервера по Ncat:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ ssh olej@185.178.47.95 'ls -l'
olej@185.178.47.95's password: 
итого 1928
-rw------- 1 olej olej 1971240 дек 22 01:16 file.jpg

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ sshpass -p asdf51 ssh -l olej 185.178.47.95 'cat file.jpg | pv -b -a |  nc -q0 -l -p 6666' &
[1] 21143
... и затем принять этот файл, по тому же Ncat, на локальном компьютере:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/org.doc$ nc -q0 185.178.47.95 6666 | pv -b -a  > locfile.jpg
1,88MiB [1,49MiB/s]

olej@ACER:~/2020_WORK/rus.linux.net.hist/org.doc$ ls -l locfile.jpg 
-rw-r--r-- 1 olej olej 1971240 янв  9 12:49 locfile.jpg

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 18 янв 2020, 02:05

Q: Как через соединение SSH выполнить на удалённом хосте целую последовательность команд?
A:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ ssh -l olej 185.178.47.95 << EOF
> ls
> pwd
> uptime
> lsb_release -a
> EOF
Pseudo-terminal will not be allocated because stdin is not a terminal.
olej@185.178.47.95's password: 
Linux 277938.local 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
bacsend.3
PREV
/home/olej
 02:03:08 up 7 days,  7:55,  4 users,  load average: 0,06, 0,02, 0,00
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster
No LSB modules are available.
Или:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ ssh -l olej 185.178.47.95 'pwd; ls -l; uptime; lsb_release -a'
olej@185.178.47.95's password: 
/home/olej
итого 8
-rwxr-xr-x 1 olej olej  214 янв 12 01:15 bacsend.3
drwxr-xr-x 2 olej olej 4096 янв 12 00:47 PREV
 02:12:03 up 7 days,  8:04,  4 users,  load average: 0,00, 0,00, 0,00
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster
No LSB modules are available.

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 23 фев 2020, 17:02

Olej писал(а):
18 окт 2019, 22:30
Краткая справка по очень большому набору команд подключения SSH туннелей в самых разнообразных случаях - Практические советы, примеры и туннели SSH:
Практически оказывается очень полезным реверсный туннель SSH. Идея которого состоит в следующем:
1. из локального хоста (с серым, локальным IP) устанавливаем сессию к серверу где-нибудь со своим белым, доступным IP...
2. после этого некоторый порт сервера переадрессуем, туннелируем на некоторый порт локального хоста
3. теперь все обращения извне, из Интернет, к серверу - будут автоматом переадресовываться на порт локального хоста...
4. до тех пор, пока сессия (п.1) не будет прервана.
Подробно это кино описано здесь: О доступе к сайту на локалхост извне

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 23 фев 2020, 17:10

Olej писал(а):
23 фев 2020, 17:02
4. до тех пор, пока сессия (п.1) не будет прервана.
Меня беспокоит иногда, что такая, или любая другая сессия SSH обрывается по "тайм-ауту молчания", самопроизвольно через некоторое время не использования...
С одной стороны, нельзя удалённую небезопасную сессию SSH открывать до бесконечности ... вдруг недоброжелатель придёт сядет за клавиатуру. :-o :lol:
С другой стороны, этим тайм-аутом хотелось бы управлять ... если я априори наперёд знаю какое время я собираюсь сидеть за клавиатурой.
Начинаю разбираться...

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 23 фев 2020, 17:26

Olej писал(а):
23 фев 2020, 17:10
Начинаю разбираться...
Со стороны сервера SSH это выглядит так:

1. смотрю где находится конфиг-файл сервера:

Код: Выделить всё

olej@277938:~$ sudo find / -name sshd_config
/etc/ssh/sshd_config
/usr/share/openssh/sshd_config
Меня интересует /etc/ssh/sshd_config

2. Исходно:

Код: Выделить всё

#TCPKeepAlive yes
...
#ClientAliveInterval 0
#ClientAliveCountMax 3
Меняю:

Код: Выделить всё

TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
ClientAliveInterval 30
ClientAliveCountMax 360
TCPKeepAlive установлен в «yes» — это означает, что сервер будет периодически проверять, находится ли клиент «на линии» – если он не отвечает, соединение автоматически разрывается.
ClientAliveInterval — Время простоя клиента в секундах, после которого демон sshd отправляет через защищённый канал запрос клиенту. Директива работает только для протокола 2.
ClientAliveCountMax — Количество проверок доступности клиента, которые могут оставаться без ответа. Если предел достигнут, sshd завершит сеанс.
При параметрах указанных выше в случае неактивности сервер будет поддерживать соединение в течении 6 часов (360 минут).
Итого, как я предполагаю, SSH будет держать незакрытыми сессии 1/2*360 = 180 сек. = 3 часа. Мне достаточно.

3. После этого, как пишут, нужно перезапустить сервер SSHD. Но это не обязательно, нужно только чтобы SSHD перечитал свою конфигурацию - как и для большинства серверов это происходит по сигналу SIGHUP:

Код: Выделить всё

$ man sshd
...
При получении сигнала отбоя SIGHUP, sshd перечитывает свой файл конфигурации путём запуска собственной копии с тем же самым именем с которым был запущен, например, /usr/sbin/sshd.

Код: Выделить всё

olej@277938:~$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-02-15 03:14:13 MSK; 1 weeks 1 days ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 556 (sshd)
    Tasks: 1 (limit: 544)
   Memory: 14.0M
   CGroup: /system.slice/ssh.service
           └─556 /usr/sbin/sshd -D

olej@277938:~$ sudo kill -SIGHUP 556

Аватара пользователя
Olej
Писатель
Сообщения: 13530
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: удалённый SSH

Непрочитанное сообщение Olej » 23 фев 2020, 17:48

Olej писал(а):
23 фев 2020, 17:26
нужно только чтобы SSHD перечитал свою конфигурацию - как и для большинства серверов это происходит по сигналу SIGHUP
Лог-файл SSHD находится в /var/log/auth.log (это вообще нужно запомнить и знать!). Там читаем после переустановки:

Код: Выделить всё

...
Feb 23 17:33:08 277938 sudo:     olej : TTY=pts/4 ; PWD=/home/olej ; USER=root ; COMMAND=/usr/bin/kill -SIGHUP 556
Feb 23 17:33:08 277938 sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb 23 17:33:08 277938 sudo: pam_unix(sudo:session): session closed for user root
Feb 23 17:33:08 277938 sshd[556]: Received SIGHUP; restarting.
Feb 23 17:33:08 277938 sshd[556]: Server listening on 0.0.0.0 port 22.
Feb 23 17:33:08 277938 sshd[556]: Server listening on :: port 22.
...
Теперь можно ожидать, что SSH сессии будут сохраняться незакрытыми 3 часа.
Olej писал(а):
23 фев 2020, 17:02
Практически оказывается очень полезным реверсный туннель SSH.
Для проверки реверсный туннель SSH создаю так:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ ssh -fN -R 185.200.243.3:8080:localhost:80 olej@185.200.243.3
olej@185.200.243.3's password: 
И тут же проверяю (на том же удалённом хосте) существование этого туннеля:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ ssh -l olej 185.200.243.3 'sudo netstat -nap | grep 8080'
olej@185.200.243.3's password: 
tcp        0      0 185.200.243.3:8080      0.0.0.0:*               LISTEN      20880/sshd: olej    
Время создания SSH туннеля:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/timeweb$ date
Вс фев 23 16:45:39 EET 2020

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя