Как преобразовать пары ключей SSH, сгенерированные с помощью PuTTYgen (Windows), в пары ключей, используемые ssh-agent и Keychain (Linux)

Я сгенерировал пары ключей с помощью PuTTYgen и вошел в систему с помощью Pageant, так что мне нужно вводить парольную фразу только один раз при загрузке моей системы.

Как мне добиться этого в Linux? Я слышал о keychain но я слышал, что он использует другой формат пары ключей - я не хочу менять свои ключи Windows, и было бы неплохо, если бы я мог беспрепятственно подключаться одинаково в Windows и Linux.

10 ответов

Решение

puttygen поддерживает экспорт вашего личного ключа в формат, совместимый с OpenSSH. Затем вы можете использовать инструменты OpenSSH для воссоздания открытого ключа.

  1. Открыть PuttyGen
  2. Нажмите Загрузить
  3. Загрузите свой закрытый ключ
  4. Идти к Conversions->Export OpenSSH и экспортируйте свой закрытый ключ
  5. Скопируйте свой закрытый ключ в ~/.ssh/id_dsa (или же id_rsa).
  6. Создайте версию открытого ключа RFC 4716, используя ssh-keygen

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
    
  7. Преобразуйте версию открытого ключа 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

Рекомендации

Копия статьи

Я продолжаю забывать это, поэтому я напишу это здесь. Не гики, просто продолжай идти.

Самый распространенный способ сделать ключ в 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.

PuTTY Faq: A.2.2

Я думаю, что 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

См. Также https://hub.docker.com/r/zinuzoid/puttygen

Еще быстрее, чем снова открывать puttygen, я часто делал следующее:

  1. Дублируйте файл открытого ключа.
  2. В копии поместите слово «ssh-rsa» в начало.
  3. Удалите начальные / конечные строки комментариев и все остальные разрывы строк.
  4. Сохранить. В результате получается однострочный ключ, который работает для openssh.
Другие вопросы по тегам