3

Я храню все свои личные ключи в зашифрованном виде в файле 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 ответ1

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .