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

992
MoLLIa

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

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

3

1 ответ на вопрос

1
grawity

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

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

Если вы входите в цепочку на разных серверах, вам нужно снова распространять файлы по всем машинам. (Хотя это только публичная часть ...) Robert Siemer 9 лет назад 0

Похожие вопросы