notes/ssh.md

91 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### ssh
Подключение
```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
```
### scp
```bash
scp ./wlt.py pi@da2001.ru:/home/pi
```
использование не стандартного порта
```bash
scp -P 227 ./wlt.py pi@da2001.ru:/home/pi
```
### ssh аутентификация по ключам
**На локальном хосте linux сгенерировать пару ключей**
```bash
ssh-keygen
```
парольную фразу можно оставить пустой, чтобы не вводить пароль каждый раз при обращении к ключу
_По умолчанию ключи будут храниться в каталоге ~/.ssh в домашнем каталоге текущего пользователя. Закрытый ключ будет называться **id_rsa**, а связанный с ним открытый ключ **id_rsa.pub**_
Теперь необходимо скопировать публичный ключ на сервер, доступ к которому настраиваем
```bash
cat ~/.ssh/id_rsa.pub | ssh login@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
```
**Для дополнительной безопасности можно отключить доступ по паролю**
Для этого необходимо отредактировать конфигурационный файл демона SSH raspberry
```bash
sudo nano /etc/ssh/sshd_config
```
Найти директиву _PasswordAuthentication_, раскомментировать ее и присвоить значение _no_
`PasswordAuthentication no`
Сохранить файл, закрыть.
Перезагрузить сервис
```bash
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
```