ssh mod
parent
644d5d8f0f
commit
2fc65cae76
129
ssh.md
129
ssh.md
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue