Хорошо, у меня есть зашифрованный закрытый ключ ssh, который обеспечивает доступ к серверу. Мой рабочий стол Ubuntu GNOME имеет встроенный графический агент ssh (морской конек v3.2.2). Этот ключ ssh находится в этом агенте ssh, и он автоматически разблокируется, когда я вхожу на свой рабочий стол. Я могу подключиться по ssh к серверу (который использует этот зашифрованный закрытый ключ ssh) нормально, без необходимости вводить что-либо.
Однако я забыл пароль для этого ключа ssh.
Есть ли способ извлечь (из агента ssh) незашифрованный закрытый ключ ssh? Поскольку я могу войти на сервер, вставив что-нибудь, очевидно, что что-то на моем компьютере может получить доступ к незашифрованной версии этого ключа, поэтому я должен иметь возможность извлечь незашифрованную версию, нет?
Я думаю, что пароль вашего ssh-ключа находится в вашем gnome-keyring. это может помочь вам его извлечь.
По замыслу, вы не можете. Вся идея парольной фразы состоит в том, чтобы защитить чувствительный пароль от посторонних глаз при доступе к диску.
Я не уверен, что правильно понял ваш вопрос:
Я не понимаю, почему удаленный сервер «использует этот зашифрованный закрытый ключ ssh», вы говорите об этом, поскольку это тот же зашифрованный закрытый ключ на вашем рабочем столе ?? Зачем??
Если я опущу эту фразу (а на удаленном сервере только ваш PUBLIC ключ в соответствующем файле authorized_keys удаленного входа в систему), то:
у вас есть агент, который запускается при загрузке и автоматически предоставляет вам доступ к ключу (т. е. он может использовать его для предоставления доступа, когда вы подключаетесь через ssh к удаленному серверу, у которого, вероятно, есть ваш открытый ключ). Таким образом, агент знает парольную фразу и может расшифровать ваш локальный закрытый ключ.
вы уверены, что закрытый ключ зашифрован? (вы можете остановить агента и попытаться:
ssh -i /path/to/theprivatekey remoteuser@remoteserver
если ключ действительно зашифрован: агент, запускаемый при загрузке, очевидно, может предоставить свой пароль. Я не знаю этого агента, но, возможно, он через файл конфигурации (надеюсь, что нет), и, возможно, через какой-то другой механизм (сам может иметь другое шифрование, которое содержит частные парольные фразы? Каким-то образом защищенным, возможно, через ваши собственные учетные данные для входа ?). Но: как только он загружен и используется (то есть, по крайней мере, при доступе к удаленному серверу ssh), он имеет в какой-то момент незашифрованный закрытый ключ ssh в памяти. На этом этапе вы можете прочитать его, если у вас есть root-доступ к вашей локальной машине, получив доступ к оперативной памяти (но вам нужно будет найти, как и где искать).
Надеюсь, это поможет (и, пожалуйста, проясните непонятные части в вашем вопросе или исправьте мои предположения!)
Изменить: другие варианты и намного проще: этот агент предоставляет вам доступ: используйте это, чтобы воссоздать новую пару закрытых / открытых ключей и поместить этот новый открытый ключ (в соответствующем формате! В зависимости от типа удаленного sshd-сервера!) в файле authorized_keys удаленного пользователя @ удаленного сервера. ДОПОЛНИТЕЛЬНО к текущему (тот, который использует ваш агент). Так что вы всегда можете использовать агент, а также использовать новую (локальную) пару закрытых (удаленных) открытых ключей. (прочтите о ssh и о том, как создать эти ключи и что делать с открытым ключом (т.е. поместите его в места, в которые вам нужно войти) и закрытым (то есть: держите его БЕЗОПАСНЫМ, ТОЛЬКО ДЛЯ ВАШИХ ГЛАЗ, НЕ ЧИТАТЬ В МИРЕ, даже если зашифрованный парольной фразой).