notes/ssh.md

4.8 KiB
Raw Blame History

SSH

Подключение

ssh admin@192.168.5.3  

если имя пользователя не указывать, соединение произойдет от имени локального пользователя

ssh 192.168.5.3  

не стандартный порт при подключении

ssh pi@da2001.ru -p 227  

не добавлять публичный ключ удаленного хоста в локальный файл known_hosts, при этом будет запрошено подтверждение подключения

ssh -o UserKnownHostsFile=/dev/null admin@192.168.1.2  

не проверять публичный ключ удаленного хоста

ssh -o StrictHostKeyChecking=no admin@192.168.1.2  

не добавлять публичный ключ и не проверять удаленный хост

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.1.2  

выполнить команду на сервере без подключения

ssh user@host ls  

выполнить локальный скрипт

ssh da2001@192.168.1.2 'python3' < test.py  

вверх

SSH аутентификация по ключам

На локальном хосте linux сгенерировать пару ключей

ssh-keygen  

парольную фразу можно оставить пустой, чтобы не вводить пароль каждый раз при обращении к ключу
По умолчанию ключи будут храниться в каталоге ~/.ssh в домашнем каталоге текущего пользователя. Закрытый ключ будет называться id_rsa, а связанный с ним открытый ключ id_rsa.pub

Теперь необходимо скопировать публичный ключ на сервер, доступ к которому настраиваем

ssh-copy-id login@example.com

или

cat ~/.ssh/id_rsa.pub | ssh login@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"  

вверх

Для дополнительной безопасности можно отключить доступ по паролю

sudo nano /etc/ssh/sshd_config  

PasswordAuthentication no

Перезагрузить сервис

sudo systemctl restart ssh  

вверх

Подключение через промежуточный хост

если нужно подключиться по ssh на host2, при этом прямого подключения нет, но есть возможность подключиться через host1, можно такое подключение выполнить одной командой

ssh -J user1@host1:22 user2@host2  

но в таком случае придется вводить пароль от host1 и от host2. Чтобы этого избежать можно добавить на хосты публичный ключ клиента

если добавить к подключению опции:

-o UserKnownHostsFile=/dev/null  
-o StrictHostKeyChecking=no  

удаленный сервер не будет проверять и не будет добавлять хеш удаленного хоста в файл known_hosts

это может быть полезно на тестовых стендах, когда узлы часто меняются и хеш изменяется.
Таким образом, полная команда может выглядеть так:

ssh -J pi@da2001.ru:227 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.5.3  

вверх

SCP

scp ./wlt.py pi@da2001.ru:/home/pi  

Не стандартный порт

scp -P 227 ./wlt.py pi@da2001.ru:/home/pi  

вверх

ssh_config