Используйте закрытые ключи только от ssh-agent, избегая "слишком много ошибок аутентификации"

Я храню все свои личные ключи в зашифрованном виде в файле encfs. Я монтирую (дешифрую) файл encfs в папку, добавляю все закрытые ключи в ssh-agent с указанием времени жизни и размонтирую папку. В этом случае мои файлы закрытых ключей были зашифрованы, и я мог получить к ним доступ через ssh-agent.

Мой список ключей стал расти, и я начал получать "Слишком много ошибок аутентификации для%username%". Я искал обходной путь, и общий совет - указывать каждый IdentityFile в ~/.ssh/config.

Host hostalias
    Hostname my.host.name
    User username
    IdentityFile ~/.ssh/unencrypted_key

Но в этом случае мои ключи должны храниться в незашифрованном состоянии все время, так как ssh будет обращаться к ним напрямую (игнорируя ssh-agent).

Есть ли какое-либо возможное решение для указания того, какой закрытый ssh-ключ (от ssh-agent) для какого хоста следует использовать?

PS Каждый ключ имеет свой собственный отпечаток, и я предположил, что это можно решить, указав его в конфигурации (что-то вроде этого):

Host hostalias
    Hostname my.host.name
    User username
    IdentityFingerPrint 0c:d6:e6:64:0f:b5:1f:29:11:51:12:74:90:55:49:ae

Но я не нашел ничего подобного.

1 ответ

Решение

Во-первых, обратите внимание, что файлы закрытых ключей SSH могут быть зашифрованы парольной фразой без каких-либо дополнительных инструментов, таких как encfs. С помощью ssh-keygen -f <file> -p установил бы фразу-пароль. (В последних версиях OpenSSH для этого используется AES-128-CBC.)

Но когда у вас есть оба IdentityFile и агент, запущенный, ssh будет просто использовать файл в качестве подсказки при выборе того, какой ключ он должен использовать. Для этого нужно только проверить открытую половину ключа. Таким образом, вам не нужно сохранять ключи дешифрованными, пока у них есть открытый ключ, извлеченный в соответствующий .pub файл, который выполняется по умолчанию, но может быть повторен с помощью ssh-keygen -f <file> -y,

Другие вопросы по тегам