notes/ssh.md

147 lines
4.8 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
- [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)
### SSH аутентификация по ключам
На локальном хосте linux сгенерировать пару ключей
```bash
ssh-keygen
```
парольную фразу можно оставить пустой, чтобы не вводить пароль каждый раз при обращении к ключу
_По умолчанию ключи будут храниться в каталоге `~/.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)
### Для дополнительной безопасности можно отключить доступ по паролю
```bash
sudo nano /etc/ssh/sshd_config
```
`PasswordAuthentication no`
Перезагрузить сервис
```bash
sudo systemctl restart ssh
```
[вверх](#ssh)
### Подключение через промежуточный хост
если нужно подключиться по 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
```
[вверх](#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