### 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  
```  