SSH авторизация по ключу

На локальном компьютере генерируем пару ключей, публичный и приватный командой:

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa

Задаём пароль для шифрования ключа (!обязательно)

-t указывает тип шифрования
-b длину ключа
-f имя и место сохранения (id_rsa по умолчанию!)

Копируем публичный ключ (id_rsa.pub) на удалённый сервер для возможности подключаться:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@machine

Файл ключа будет скопирован в конец расположенного на сервере файла

$HOME/.ssh/authorized_keys

Для авторизации только по ключу без возможности входа по паролю на удалённой машине в /etc/ssh/sshd_config делаем:
PasswordAuthentication no

Что бы при каждом подключении не вводить пароль ключа

ssh-add ~/.ssh/id_rsa

SSH-Agent автоматический ввод пароля ключа при соединении с сервером и привязка к KWallet

sudo apt install ssh-agent ssh-add ksshaskpass

В ~/.bash_profile добавляем:
eval $(ssh-agent)
export SSH_ASKPASS=/usr/bin/ksshaskpass

Создаем скрипт для автозапуска при загрузке KDE

sudo nano ~/.config/autostart-scripts/ssh-add.sh

Следующего содержания:

#!/bin/sh
ssh-add $HOME/.ssh/key1 $HOME/.ssh/key2 $HOME/.ssh/key3 </dev/null

Где key1 key2 key3 имена ключей.

wiki.archlinux.org/index.php/KDE_Wallet
http://pashazz.github.io/blog/2015/11/08/ssh-agent-kde/
http://estan.dose.se/2016/04/ssh-agent-kwallet-pam-ssh-add-and-ksshaskpass-under-plasma

Автоматический ввод пароля SSH-ключа из консоли

Для автоматического ввода пароля от ключа SSH соединения из коммандной строки для подключения к SSH на пример из скрипта, используем:

sudo apt install expect

Создаем файл /usr/bin/exp следующего содержания:

#!/usr/bin/expect

set timeout 20

set cmd [lrange $argv 1 end]
set password [lindex $argv 0]

eval spawn $cmd
expect "passphrase for key"
send "$password\r";
interact

Даем права на выполнение:

sudo chmox +x /usr/bin/exp

Используем:

exp <пароль> ssh <параметры подключения>

Для автоматического входа по паролю из коммандной строки, есть пакет sshpass

Установка: sudo apt install sshpass

Использование:

sshpass -p <пароль> ssh <параметры подключения>