Страница 2 из 3

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

Добавлено: 18 окт 2019, 22:30
Olej
Краткая справка по очень большому набору команд подключения 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 для изменения переадресации портов

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

Добавлено: 09 янв 2020, 13:04
Olej
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

удалённый SSH

Добавлено: 09 янв 2020, 13:46
Olej
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 xxxxxx 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

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

Добавлено: 18 янв 2020, 02:05
Olej
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.

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

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

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

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

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

Добавлено: 23 фев 2020, 17:26
Olej
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

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

Добавлено: 23 фев 2020, 17:48
Olej
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

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

Добавлено: 18 фев 2021, 04:21
Olej
Q: Как сгенерировать свой публичный ключ и передать его на удалённые сервисы (когда это требуют для идентификации клиента)?
A: Делаем примерно следующую последовательность действий:

1. В домашнем каталоге (домашнем логине) ...

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

olej@olej-H81M-DS2V:~$ cd $HOME/.ssh

olej@olej-H81M-DS2V:~/.ssh$ ls -l
итого 4
-rw-r--r-- 1 olej olej 222 окт 22 13:49 known_hosts
2. Герерируем ключ (отвечаем там на кой-какие вопросы ;-) ):

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

olej@olej-H81M-DS2V:~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/olej/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/olej/.ssh/id_rsa
Your public key has been saved in /home/olej/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:8Bht4ncsWBRJaHWpjGAYO7aqVgRhbk1JcTKVnYgHv1Y olej@olej-H81M-DS2V
The key's randomart image is:
+---[RSA 3072]----+
| o+X*o++*o..     |
|o.++B+o=...      |
| o=o.++E+.       |
|.. + .+Xo.       |
|  o  o+ S o      |
| . ..  . o       |
|. .              |
|..               |
|o                |
+----[SHA256]-----+
Смотрим что там у нас получилось:

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

olej@olej-H81M-DS2V:~/.ssh$ ls -l
итого 12
-rw------- 1 olej olej 2602 окт 22 23:44 id_rsa
-rw-r--r-- 1 olej olej  573 окт 22 23:44 id_rsa.pub
-rw-r--r-- 1 olej olej  222 окт 22 13:49 known_hosts
3. В то место, где у нас просят публичный SSH ключ, копируем (пересылаем) непосредственно содержимое файла:

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

olej@olej-H81M-DS2V:~/.ssh$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFVLNfDjafEYs7hrVGW9xZe0fRRPT0vqKf5o6axkCn/54J+WALlBMv1t3yI079IddnT85KyGNmyuVge9HhtSZAoA3KYLU03pAHD4TJpV/+cGfYKJmowzWr1Adr7nkUMjrbsrZilG3SbZqG+SMHpKHUXy6cBFCwd2TPIU47zG95AVSWbSYe+ET96gSog4esCZ/LDC/u8bg6yMikVDJp+gkk+c5ulP0PB4ETvfUAatEWbyRjwlGdnTBB7e6W+ZV0WeEYlaBnHMk0YWclCnRTK85DvEeGCpNP077kLz/lmeCWJ8Mms7fKPQFU/vQzpRZE2vJL/JybPiJHsMMVBVwDer7eoB37QfZSQasn9iydhQ0LDnRQ2sDtZKOjU/vPblGFt6mgCHjTNEHfOTq9MBo7lPFoBWD2YBqwnOC25PTdrIvpaLTp66QpX0XKkoMQbh/rIysBUQoGf3p6UfMhESfToTIY3SCTnA2sMMrZLWZfpEbY7mUGfBVZc6T+itaOe12q6mE= olej@olej-H81M-DS2V
... вот именно так, начиная с ssh-rsa, указывающего на алгоритм шифрования ключа (может у вам отличаться).

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

Добавлено: 07 апр 2021, 18:25
Olej
Q: Доступ по ключу, а не по паролю.
A: Это обеспечивает не только повышенный уровень защищённости, но и может упростить отладочные работы в своей LAN, когда нужен частый доступ к хостам...

1. Генерируем пару ключей как показано выше (ssh-keygen) ...
2. Копируем публичный ключ на сервер к которому планируется доступ по ключу, для этого есть специальная утилита : ssh-copy-id

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

olej@R420:~/.ssh$ ssh-copy-id olej@nvidia
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/olej/.ssh/id_rsa.pub"
The authenticity of host 'nvidia (192.168.1.11)' can't be established.
ECDSA key fingerprint is SHA256:h4gjl+H5EOZLcy/PGAO1qBmXux1S+iSslT9FfvIVoP4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
olej@nvidia's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'olej@nvidia'"
and check to make sure that only the key(s) you wanted were added.
(здесь: olej - имя пользователя для которого..., а nvidia - хост, возможно прописанный в /etc/hosts, здесь может быть просто IP-адрес)
3. Если после этого рассмотреть тот хост:

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

olej@nvidia:~/.ssh$ hostname
nvidia

olej@nvidia:~/.ssh$ ls -l
итого 32
-rw------- 1 olej olej   563 апр  5 14:20 authorized_keys
-rw-rw-r-- 1 olej olej    51 дек 10 11:45 config
-rw------- 1 olej olej  2602 окт 31 15:45 id_rsa
-rw-r--r-- 1 olej olej   565 окт 31 15:45 id_rsa.pub
-rw------- 1 olej olej 13260 мар 31 17:02 known_hosts
Появился новый файл ~/.ssh/authorized_keys
Где каждый публичный ключ будет представлен 1-й строкой:

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

olej@nvidia:~/.ssh$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDlcnKQwmjLY3d69tOdjSnnQ/iJQ9Uu...
...
Так что ключ занести туда можно и простым текстовым копированием, как показывалось в сообщении выше.
4. Теперь мы можем иметь доступ по своему ключу:

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

olej@R420:/dev$ ssh nvidia -i ~/.ssh/id_rsa
Last login: Mon Apr  5 14:15:13 2021 from 192.168.1.13
olej@nvidia:~$ hostname
nvidia
... и мы уже на удалённом хосте...
5. Как видно, в команде использовался приватный (секретный) ключ. На самом деле хорошей практикой есть копирование его в отдельный ключевой файл, с нейтральным именем, в то место откуда производится доступ....