Как преобразовать пары ключей SSH, сгенерированные с помощью PuTTYgen (Windows), в пары ключей, используемые ssh-agent и Keychain (Linux)
Я сгенерировал пары ключей с помощью PuTTYgen и вошел в систему с помощью Pageant, так что мне нужно вводить парольную фразу только один раз при загрузке моей системы.
Как мне добиться этого в Linux? Я слышал о keychain
но я слышал, что он использует другой формат пары ключей - я не хочу менять свои ключи Windows, и было бы неплохо, если бы я мог беспрепятственно подключаться одинаково в Windows и Linux.
10 ответов
puttygen
поддерживает экспорт вашего личного ключа в формат, совместимый с OpenSSH. Затем вы можете использовать инструменты OpenSSH для воссоздания открытого ключа.
- Открыть PuttyGen
- Нажмите Загрузить
- Загрузите свой закрытый ключ
- Идти к
Conversions->Export OpenSSH
и экспортируйте свой закрытый ключ - Скопируйте свой закрытый ключ в
~/.ssh/id_dsa
(или жеid_rsa
). Создайте версию открытого ключа RFC 4716, используя
ssh-keygen
ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
Преобразуйте версию открытого ключа RFC 4716 в формат OpenSSH:
ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub
Если у вас есть открытый ключ от пользователя в формате PuTTY, вы можете преобразовать его в стандартный формат openssh, например так:
ssh-keygen -i -f keyfile.pub > newkeyfile.pub
Рекомендации
- Источник:
http://www.treslervania.com/node/408 - Зеркало: https://web.archive.org/web/20120414040727/http://www.treslervania.com/node/408.
Копия статьи
Я продолжаю забывать это, поэтому я напишу это здесь. Не гики, просто продолжай идти.
Самый распространенный способ сделать ключ в Windows - это использовать Putty / Puttygen. Puttygen предоставляет удобную утилиту для преобразования закрытого ключа linux в формат Putty. Однако, что не рассматривается, так это то, что когда вы сохраняете открытый ключ с помощью puttygen, он не будет работать на сервере Linux. Windows помещает некоторые данные в разные области и добавляет разрывы строк.
Решение: Когда вы откроете экран с открытым ключом при создании пары ключей в puttygen, скопируйте открытый ключ и вставьте его в текстовый файл с расширением.pub. Вы сэкономите своим системным часам разочарование, читая подобные сообщения.
ОДНАКО, сисадмины, вы неизменно получаете файл ключа wonky, который не выдает сообщения об ошибке в журнал аутентификации, за исключением того, что ключ не найден при попытке ввода пароля; несмотря на то, что все остальные ключи работают нормально, вы отправили этот ключ пользователю 15 раз.
ssh-keygen -i -f keyfile.pub > newkeyfile.pub
Следует преобразовать существующий открытый ключ puttygen в формат OpenSSH.
Более новые версии PuTTYgen (у меня 0,64) могут отображать открытый ключ OpenSSH для вставки в систему Linux в .ssh/authorized_keys
файл, как показано на следующем рисунке:
В качестве альтернативы, если вы хотите получить закрытый и открытый ключи из отформатированного файла ключей PuTTY, вы можете использовать puttygen
в *nix системах. Для большинства подходящих систем puttygen
является частью putty-tools
пакет.
Вывод закрытого ключа из отформатированного ключевого файла PuTTY:
$ puttygen keyfile.pem -O private-openssh -o avdev.pvk
Для открытого ключа:
$ puttygen keyfile.pem -L
sudo apt-get install putty
Это автоматически установит инструмент puttygen.
Теперь, чтобы преобразовать файл PPK, который будет использоваться с командой SSH, выполните в терминале следующее
puttygen mykey.ppk -O private-openssh -o my-openssh-key
Затем вы можете подключиться через SSH с:
ssh -v user@example.com -i my-openssh-key
http://www.graphicmist.in/use-your-putty-ppk-file-to-ssh-remote-server-in-ubuntu/
У меня недавно была эта проблема, когда я переходил с Putty для Linux на Remmina для Linux. Так что у меня есть много файлов PPK для Putty .putty
каталог, как я использую это в течение 8 лет. Для этого я использовал простой for
Команда для оболочки Bash, чтобы сделать все файлы:
cd ~/.putty
for X in *.ppk; do puttygen $X -L > ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pub; puttygen $X -O private-openssh -o ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pvk; done;
Очень быстро и точно, выполнил работу для всех файлов, которые были замазки. Если он находит ключ с паролем, он останавливается и сначала запрашивает пароль для этого ключа, а затем продолжает.
Вероятно, проще создать ключи в Linux и использовать PuTTYgen для преобразования ключей в формат PuTTY.
Я думаю, что TCSgrad пытался спросить (несколько лет назад), как заставить Linux вести себя так, как его Windows-машина. Таким образом, существует агент (pageant), который содержит расшифрованную копию закрытого ключа, поэтому парольную фразу нужно вводить только один раз. Затем клиент ssh, putty, может войти в систему на компьютерах, где его открытый ключ указан как "авторизованный" без запроса пароля.
Аналогом этого является то, что Linux, выступая в качестве клиента ssh, имеет агента, хранящего расшифрованный закрытый ключ, так что когда TCSgrad вводит "ssh host", команда ssh получит свой закрытый ключ и будет работать без запроса пароля. хост, конечно, должен был бы держать открытый ключ в ~/.ssh/authorized_keys.
Аналог Linux в этом сценарии выполняется с использованием ssh-agent (аналог конкурса) и ssh-add (аналог добавления закрытого ключа в конкурс).
Метод, который работал для меня, состоял в том, чтобы использовать: $ ssh-agent $SHELL Этот $ SHELL был волшебным трюком, который мне был нужен, чтобы агент работал и продолжал работать. Я нашел это где-то в сети, и через несколько часов я ударился головой о стену.
Теперь у нас работает аналог Pageant, агент без загруженных ключей.
Ввод $ ssh-add сам по себе добавит (по умолчанию) закрытые ключи, перечисленные в файлах идентификации по умолчанию в ~/.ssh .
Веб-статью с гораздо более подробной информацией можно найти здесь
PPK - OpenSSH RSA с PuttyGen и Docker.
Закрытый ключ:
docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -O private-openssh -o my-openssh-key
Открытый ключ:
docker run --rm -v $(pwd):/app zinuzoid/puttygen private.ppk -L -o my-openssh-key.pub
Еще быстрее, чем снова открывать puttygen, я часто делал следующее:
- Дублируйте файл открытого ключа.
- В копии поместите слово «ssh-rsa» в начало.
- Удалите начальные / конечные строки комментариев и все остальные разрывы строк.
- Сохранить. В результате получается однострочный ключ, который работает для openssh.