From 2fc65cae76e0047cfb894c654cc828738a70d0f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BE=D0=BB=D0=B3=D0=B8=D0=B9=20=D0=90=D1=80=D1=82?= =?UTF-8?q?=D1=91=D0=BC?= Date: Wed, 3 Apr 2024 09:14:24 +0300 Subject: [PATCH] ssh mod --- ssh.md | 129 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 92 insertions(+), 37 deletions(-) diff --git a/ssh.md b/ssh.md index fd2ddc0..1801582 100644 --- a/ssh.md +++ b/ssh.md @@ -1,91 +1,146 @@ -### ssh -Подключение +# SSH + +- [SSH](#ssh) + - [Подключение](#подключение) + - [SSH аутентификация по ключам](#ssh-аутентификация-по-ключам) + - [Для дополнительной безопасности можно отключить доступ по паролю](#для-дополнительной-безопасности-можно-отключить-доступ-по-паролю) + - [Подключение через промежуточный хост](#подключение-через-промежуточный-хост) + - [SCP](#scp) + - [Не стандартный порт](#не-стандартный-порт) + - [ssh\_config](#ssh_config) + +## Подключение + ```bash ssh admin@192.168.5.3 ``` + если имя пользователя не указывать, соединение произойдет от имени локального пользователя + ```bash ssh 192.168.5.3 ``` + не стандартный порт при подключении + ```bash ssh pi@da2001.ru -p 227 ``` + не добавлять публичный ключ удаленного хоста в локальный файл _**known_hosts**_, при этом будет запрошено подтверждение подключения + ```bash ssh -o UserKnownHostsFile=/dev/null admin@192.168.1.2 ``` + не проверять публичный ключ удаленного хоста + ```bash ssh -o StrictHostKeyChecking=no admin@192.168.1.2 ``` + не добавлять публичный ключ и не проверять удаленный хост + ```bash ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.1.2 ``` + выполнить команду на сервере без подключения + ```bash ssh user@host ls ``` + выполнить локальный скрипт + ```bash ssh da2001@192.168.1.2 'python3' < test.py -``` +``` + +[вверх](#ssh) -### scp -```bash -scp ./wlt.py pi@da2001.ru:/home/pi -``` -использование не стандартного порта -```bash -scp -P 227 ./wlt.py pi@da2001.ru:/home/pi -``` +### SSH аутентификация по ключам - - -### ssh аутентификация по ключам - -**На локальном хосте linux сгенерировать пару ключей** +На локальном хосте linux сгенерировать пару ключей ```bash ssh-keygen -``` +``` + парольную фразу можно оставить пустой, чтобы не вводить пароль каждый раз при обращении к ключу -_По умолчанию ключи будут храниться в каталоге ~/.ssh в домашнем каталоге текущего пользователя. Закрытый ключ будет называться **id_rsa**, а связанный с ним открытый ключ – **id_rsa.pub**_ +_По умолчанию ключи будут храниться в каталоге `~/.ssh` в домашнем каталоге текущего пользователя. Закрытый ключ будет называться `id_rsa`, а связанный с ним открытый ключ – `id_rsa.pub`_ Теперь необходимо скопировать публичный ключ на сервер, доступ к которому настраиваем + +```bash +ssh-copy-id login@example.com +``` + +или + ```bash cat ~/.ssh/id_rsa.pub | ssh login@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" -``` -**Для дополнительной безопасности можно отключить доступ по паролю** -Для этого необходимо отредактировать конфигурационный файл демона SSH raspberry +``` + +[вверх](#ssh) + +### Для дополнительной безопасности можно отключить доступ по паролю + ```bash sudo nano /etc/ssh/sshd_config -``` -Найти директиву _PasswordAuthentication_, раскомментировать ее и присвоить значение _no_ +``` + `PasswordAuthentication no` -Сохранить файл, закрыть. -Перезагрузить сервис + +Перезагрузить сервис + ```bash sudo systemctl restart ssh -``` +``` + +[вверх](#ssh) -### подключение через промежуточный хост -_если нужно подключиться по ssh на host2, при этом прямого подключения нет, но есть возможность подключиться через host1, можно такое подключение выполнить одной командой_ -``` +### Подключение через промежуточный хост + +если нужно подключиться по ssh на host2, при этом прямого подключения нет, но есть возможность подключиться через host1, можно такое подключение выполнить одной командой + +```bash ssh -J user1@host1:22 user2@host2 -``` +``` + но в таком случае придется вводить пароль от host1 и от host2. Чтобы этого избежать можно добавить на хосты публичный ключ клиента -если добавить к подключению опции: -``` +если добавить к подключению опции: + +```bash -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -``` +``` + удаленный сервер не будет проверять и не будет добавлять хеш удаленного хоста в файл _**known_hosts**_ -это может быть полезно, например, когда часто меняется прошивка зондов и хеш изменяется. -Таким образом, полная команда может выглядеть так: -``` +это может быть полезно на тестовых стендах, когда узлы часто меняются и хеш изменяется. +Таким образом, полная команда может выглядеть так: + +```bash ssh -J pi@da2001.ru:227 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.5.3 -``` \ No newline at end of file +``` + +[вверх](#ssh) + +## SCP + +```bash +scp ./wlt.py pi@da2001.ru:/home/pi +``` + +### Не стандартный порт + +```bash +scp -P 227 ./wlt.py pi@da2001.ru:/home/pi +``` + +[вверх](#ssh) + +## ssh_config +