master
Долгий Артём 2024-04-03 09:14:24 +03:00
parent 644d5d8f0f
commit 2fc65cae76
1 changed files with 92 additions and 37 deletions

129
ssh.md
View File

@ -1,91 +1,146 @@
### ssh # SSH
Подключение
- [SSH](#ssh)
- [Подключение](#подключение)
- [SSH аутентификация по ключам](#ssh-аутентификация-по-ключам)
- [Для дополнительной безопасности можно отключить доступ по паролю](#для-дополнительной-безопасности-можно-отключить-доступ-по-паролю)
- [Подключение через промежуточный хост](#подключение-через-промежуточный-хост)
- [SCP](#scp)
- [Не стандартный порт](#не-стандартный-порт)
- [ssh\_config](#ssh_config)
## Подключение
```bash ```bash
ssh admin@192.168.5.3 ssh admin@192.168.5.3
``` ```
если имя пользователя не указывать, соединение произойдет от имени локального пользователя если имя пользователя не указывать, соединение произойдет от имени локального пользователя
```bash ```bash
ssh 192.168.5.3 ssh 192.168.5.3
``` ```
не стандартный порт при подключении не стандартный порт при подключении
```bash ```bash
ssh pi@da2001.ru -p 227 ssh pi@da2001.ru -p 227
``` ```
не добавлять публичный ключ удаленного хоста в локальный файл _**known_hosts**_, при этом будет запрошено подтверждение подключения не добавлять публичный ключ удаленного хоста в локальный файл _**known_hosts**_, при этом будет запрошено подтверждение подключения
```bash ```bash
ssh -o UserKnownHostsFile=/dev/null admin@192.168.1.2 ssh -o UserKnownHostsFile=/dev/null admin@192.168.1.2
``` ```
не проверять публичный ключ удаленного хоста не проверять публичный ключ удаленного хоста
```bash ```bash
ssh -o StrictHostKeyChecking=no admin@192.168.1.2 ssh -o StrictHostKeyChecking=no admin@192.168.1.2
``` ```
не добавлять публичный ключ и не проверять удаленный хост не добавлять публичный ключ и не проверять удаленный хост
```bash ```bash
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.1.2 ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.1.2
``` ```
выполнить команду на сервере без подключения выполнить команду на сервере без подключения
```bash ```bash
ssh user@host ls ssh user@host ls
``` ```
выполнить локальный скрипт выполнить локальный скрипт
```bash ```bash
ssh da2001@192.168.1.2 'python3' < test.py ssh da2001@192.168.1.2 'python3' < test.py
``` ```
[вверх](#ssh)
### scp ### SSH аутентификация по ключам
```bash
scp ./wlt.py pi@da2001.ru:/home/pi
```
использование не стандартного порта
```bash
scp -P 227 ./wlt.py pi@da2001.ru:/home/pi
```
На локальном хосте linux сгенерировать пару ключей
### ssh аутентификация по ключам
**На локальном хосте linux сгенерировать пару ключей**
```bash ```bash
ssh-keygen ssh-keygen
``` ```
парольную фразу можно оставить пустой, чтобы не вводить пароль каждый раз при обращении к ключу парольную фразу можно оставить пустой, чтобы не вводить пароль каждый раз при обращении к ключу
о умолчанию ключи будут храниться в каталоге ~/.ssh в домашнем каталоге текущего пользователя. Закрытый ключ будет называться **id_rsa**, а связанный с ним открытый ключ **id_rsa.pub**_ о умолчанию ключи будут храниться в каталоге `~/.ssh` в домашнем каталоге текущего пользователя. Закрытый ключ будет называться `id_rsa`, а связанный с ним открытый ключ `id_rsa.pub`_
Теперь необходимо скопировать публичный ключ на сервер, доступ к которому настраиваем Теперь необходимо скопировать публичный ключ на сервер, доступ к которому настраиваем
```bash
ssh-copy-id login@example.com
```
или
```bash ```bash
cat ~/.ssh/id_rsa.pub | ssh login@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" cat ~/.ssh/id_rsa.pub | ssh login@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
``` ```
**Для дополнительной безопасности можно отключить доступ по паролю**
Для этого необходимо отредактировать конфигурационный файл демона SSH raspberry [вверх](#ssh)
### Для дополнительной безопасности можно отключить доступ по паролю
```bash ```bash
sudo nano /etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config
``` ```
Найти директиву _PasswordAuthentication_, раскомментировать ее и присвоить значение _no_
`PasswordAuthentication no` `PasswordAuthentication no`
Сохранить файл, закрыть.
Перезагрузить сервис Перезагрузить сервис
```bash ```bash
sudo systemctl restart ssh sudo systemctl restart ssh
``` ```
[вверх](#ssh)
### подключение через промежуточный хост ### Подключение через промежуточный хост
_если нужно подключиться по ssh на host2, при этом прямого подключения нет, но есть возможность подключиться через host1, можно такое подключение выполнить одной командой_
``` если нужно подключиться по ssh на host2, при этом прямого подключения нет, но есть возможность подключиться через host1, можно такое подключение выполнить одной командой
```bash
ssh -J user1@host1:22 user2@host2 ssh -J user1@host1:22 user2@host2
``` ```
но в таком случае придется вводить пароль от host1 и от host2. Чтобы этого избежать можно добавить на хосты публичный ключ клиента но в таком случае придется вводить пароль от host1 и от host2. Чтобы этого избежать можно добавить на хосты публичный ключ клиента
если добавить к подключению опции: если добавить к подключению опции:
```
```bash
-o UserKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null
-o StrictHostKeyChecking=no -o StrictHostKeyChecking=no
``` ```
удаленный сервер не будет проверять и не будет добавлять хеш удаленного хоста в файл _**known_hosts**_ удаленный сервер не будет проверять и не будет добавлять хеш удаленного хоста в файл _**known_hosts**_
это может быть полезно, например, когда часто меняется прошивка зондов и хеш изменяется. это может быть полезно на тестовых стендах, когда узлы часто меняются и хеш изменяется.
Таким образом, полная команда может выглядеть так: Таким образом, полная команда может выглядеть так:
```
```bash
ssh -J pi@da2001.ru:227 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.5.3 ssh -J pi@da2001.ru:227 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no admin@192.168.5.3
``` ```
[вверх](#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