ssh-ключ с парольной фразой, с цепочкой для ключей
keychain - это небольшая утилита, которая управляет ssh-agent от вашего имени и позволяет ssh-agent оставаться запущенным после завершения сеанса входа в систему. При последующих входах в систему цепочка для ключей подключится к существующему экземпляру ssh-agent. На практике это означает, что парольную фразу необходимо вводить только во время первого входа в систему после перезагрузки. При последующих входах в систему используется незашифрованный ключ из существующего экземпляра ssh-agent. Это также может быть полезно для разрешения аутентификации RSA / DSA без пароля в заданиях cron без ssh-ключей без пароля.
Чтобы включить связку ключей, установите ее и добавьте что-то вроде следующего в ~ / .bash_profile:
eval keychain --agents ssh --eval id_rsa
С точки зрения безопасности, ssh-идент и цепочка для ключей хуже, чем экземпляры ssh-agent, ограниченные временем жизни конкретного сеанса, но они предлагают высокий уровень удобства. Чтобы повысить безопасность цепочки для ключей, некоторые люди добавляют опцию --clear к своему вызову цепочки для ключей ~ / .bash_profile. При этом необходимо повторно вводить парольные фразы при входе в систему, как указано выше, но задания cron по-прежнему будут иметь доступ к незашифрованным ключам после выхода пользователя из системы. Вики-страница цепочки для ключей содержит больше информации и примеров.
Получил эту информацию от;
https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt
Надеюсь, это поможет
Я лично смог автоматически ввести свою фразу-пароль при запуске терминала, выполнив следующее: (конечно, вы можете изменить скрипт и приспособить его к вашим потребностям)
отредактируйте файл bashrc, чтобы добавить этот скрипт;
Проверьте, не активен ли агент SSH
if [-z "$ SSH_AUTH_SOCK"]; затем
exec ssh-agent bash -c "ssh-add; $ 0"
echo "Агент SSH был разбужен"
выход
фи
Над строкой запускается ожидаемый скрипт при запуске терминала.
. / Ssh.exp
вот содержимое этого ожидаемого скрипта
#!/usr/bin/expect
set timeout 20
set passphrase "test"
spawn "./keyadding.sh"
expect "Enter passphrase for /the/path/of/yourkey_id_rsa:"
send "$passphrase\r";
interact
Вот содержимое моего скрипта keyadding.sh (вы должны поместить оба скрипта в свою домашнюю папку, обычно / home / user)
#!/bin/bash
ssh-add /the/path/of/yourkey_id_rsa
exit 0
Я НАСТОЯТЕЛЬНО рекомендую зашифровать пароль в сценарии .exp, а также переименовать этот файл .exp в нечто вроде term_boot.exp или что-либо еще в целях безопасности. Не забудьте создать файлы непосредственно из терминала, используя nano или vim (например: nano ~/.bashrc | nano term_boot.exp
), а также chmod +x script.sh
, чтобы сделать его исполняемым. chmod +r term_boot.exp
также будет полезно, но вам придется добавить sudo перед ./ssh.exp в вашем файле bashrc. Таким образом, вам придется вводить пароль sudo каждый раз, когда вы запускаете свой терминал. Для меня это удобнее, чем парольная фраза, потому что я помню свой пароль администратора (sudo) под очагом.
Кроме того, вот еще один способ сделать это, я думаю;
https://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/
Определенно изменит мой метод для этого, когда у меня будет время.