====== Open SSH ======
Для шифрования, в основном, используется алгоритм **RSA** (устар).\\
Две версии, **openssh-client** и **openssh-server**.\\
===== Беспарольный доступ =====
Ключи генерируются на хосте **с которого нужен беспарольный** доступ, затем открытый ключ копируется **туда куда нужен** беспарольный доступ\\
Генерируем ключи (pub/priv), утилитой **ssh-keygen**. Оба файла находятся в **~/.ssh/**, содержимое файла **.pub** нужно скопировать на сервер к которому будем подключаться, в **/home/<учетка_для_входа>/.ssh/authorized_keys**.\\
Есть несколько алгоритмов, "**rsa**" популярный но устаревающий, в данном примере "**ecdsa**" с длинной ключа **521**
# ssh-keygen -t ecdsa -b 521 [либо можно -t rsa -b 4096]
==== Копирование файла ====
Для копирования открытого ключа есть специальная утилита **ssh-copy-id**, она сама скопирует нужный файл в нужное место
$ ssh-copy-id -i ~/.ssh/id_ecdsa user@host
==== Несколько ключей ====
Если имеется несколько ключей для разных подключений, нужно указывать полный путь к файлу ключа, после аргумента **-i**.\\
$ ssh -i .ssh/mykey
===== Передача файлов по сети (scp) =====
Передать файл по ssh можно либо перенаправив вывод:
# cat ./file.txt ssh user@host "cat >> ./file.txt"
Копирование **с удаленной машины**, команда **scp** (порядок файлов мб наоборот)
# scp [-P 22] user@host:source_file desc_file
Копирование **на удаленную машину**, команда **scp**
# scp [-P 22] source_file user@host:desc_file
:!: KeepAlived
[[https://unix.stackexchange.com/questions/602518/ssh-connection-client-loop-send-disconnect-broken-pipe-or-connection-reset]]\\
На клиенте: ~/.ssh/config
Host *
ServerAliveInterval 20
TCPKeepAlive no