LINUX.ORG.RU

Я вшоке: формат публичного ключа putty не соответствует формату sshd


0

1

Это что же такое творится, люди?

Полдня настраивал авторизацию SSH по ключу. И так, и эдак, и все рекомендации и рецепты прочитал - не логинится Putty и всё. Сервер все время требует пароль.


Что делал

Публичный и приватный ключ были сгенерированы через Puttygen. Публичный положил на сервер в файл:

~/.ssh/authorized_keys

В файл /etc/ssh/sshd_config прописал:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

Перезагрузил sshd на всякий случай. На клиенте в Putty указал для коннекта приватный ключ. И всеравно требуется пароль.


Как решил

Закралось подозрение, что sshd по каким-то причинам не видит ключа. Решил сгенерировать открытый и закрытый ключ на самом сервере:

ssh-keygen -t rsa -C 'myemail@mail.ru'

Открытый положил как ~/.ssh/authorized_keys. Закрытый скопировал на клиента. Указываю этот закрытый ключ в Putty - а Putty говорит: не понимаю такого формата.

Сравниваю форматы - действительно очень разные. Так, значит воспользоваться Linux-ключами в Putty не получится.

Тогда для интереса сравниваю форматы открытых ключей - тоже разные!

Puttygen генерирует открытый ключ такого вида:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121228"
AAALkjsfasdfkvKJHKJHkdsadasfjgQ50WpuUXFwHlA0STFJQT77nIp5PTo86qa+
RRNDQRxgaRt3ENk0sM38LJKJKGJHGsakKLYZxabZayRwxGHChNWfR+/5GkoPj93J
lpV1e2Sbr4Guogw5OBKJmwcDt3c7gQj+gX7XKJHsafdkjfaK345hs3QH4Bt/gwiL
2U/UhQM=
---- END SSH2 PUBLIC KEY ----

А ssh-keygen генерирует открытый ключ такого вида:

ssh-rsa AdPhkjhb487LhsDLOdaf0aREf ... MUFwE08g2xjEWNZ3==

И, соответственно, sshd не понимает формата Putty.

Для интереса решил сделать следующее. Преобразовал руками файл публичного ключа, сделанный Putty в формат ssh-keygen. Убрал переносы строк, сделал первыми символы «ssh-rsa ». То есть вот так:

ssh-rsa AAALkjsfasdfkvKJHKJHkdsa ... Bt/gwiL2U/UhQM=

На сервере поставил этот исправленный Puttygen открытый ключ, на клиенте - закрытый Puttygen ключ для него.

И о чудо! Смог зайти без пароля по ключу.

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

★★★★★

$ ssh-keygen -i -f id_rsa.pub >> .ssh/authorized_keys2

Тузик, ты балбес.

anonymous ()

у путти действительно свой формат.
надо конвертировать в openssh формат, если хочешь юзать в связке с openssh-сервером.
Это всё настолько «естественно», что в бытность мою вендузятником не потребовалось никаких манов.

aol ★★★★★ ()
Ответ на: комментарий от anonymous

Ни в одной из статей по подключению по SSH через Putty без пароля об этом шаманстве не говорится.

Может быть, различие форматов появилось недавно?

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Не могу сказать, но когда мне понадобилось, я загуглил за пару минут.

То, что ключи разные я узнал, когда подрубался к рабочему GIT, т.к. мне прислали заботливо сделанный ppk.

anonymous ()
Ответ на: комментарий от Xintrea

Как минимум три года назад это различие было.

leave ★★★★★ ()

А там разве в самой путти это дело не подсказано? Вроде было.

LMD ()

Б-г-г. У puttygen есть импорт обычных ключей в свой формат. И, о чудо, putty есть под никсы, с консольной конвертилкой ключей в разные форматы.

Это настолько тривиально, что откровением могло показаться только совсем школолетнему нубасу.

anonymous ()
Ответ на: комментарий от LMD

А там разве в самой путти это дело не подсказано? Вроде было.

Не наблюдаю. Я ищу «сохранить как» для ключей - ничего подобного нет. В окне сохранения тоже нет выбора формата сохранения.

Xintrea ★★★★★ ()
$ puttygen --help 
PuTTYgen development snapshot 0.62
Usage: puttygen ( keyfile | -t type [ -b bits ] )
                [ -C comment ] [ -P ] [ -q ]
                [ -o output-keyfile ] [ -O type | -l | -L | -p ]
  -t    specify key type when generating (rsa, dsa, rsa1)
  -b    specify number of bits when generating key
  -C    change or specify key comment
  -P    change key passphrase
  -q    quiet: do not display progress bar
  -O    specify output type:
           private             output PuTTY private key format
           private-openssh     export OpenSSH private key
           private-sshcom      export ssh.com private key
           public              standard / ssh.com public key
           public-openssh      OpenSSH public key
           fingerprint         output the key fingerprint
  -o    specify output file
  -l    equivalent to `-O fingerprint'
  -L    equivalent to `-O public-openssh'
  -p    equivalent to `-O public'
ukr_unix_user ★★★ ()
Ответ на: комментарий от Xintrea

Ну вот же. Там ещё где-то в ридми было про это написано или на сайте, я уже не помню.

LMD ()
Ответ на: комментарий от LMD

А блин. Оно неактивное, вот и не увидел. Вообще неактивные элементы с некоторых пор выпадают из поля зрения, как и реклама.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Неактивное, потому что ключа ещё нет и конвертить нечего. Но в принципе могли бы и при сохранении предложить формат, тут я с тобой соглашусь.

LMD ()

"Я познаю мир"

И, соответственно, sshd не понимает формата Putty .

Открытие года, срочно в новости!

yoghurt ★★★★★ ()
Ответ на: комментарий от anonymous

И, о чудо, putty есть под никсы

Вот, кстати, давно хотел спросить: зачем оно надо ?

AS ★★★★★ ()

Puttygen позволяет скопировать открытый ключ в ssh-формате из самого верхнего поля.

ну или -L, да.

Adjkru ★★★★★ ()

спасибо вам за разъяснение. очень помогли. я тоже никак не мог разобраться почему моя точка доступа Ubiquiti на линуксном AirOs не может импортировать публичный ключ для SSH. теперь все настроил. думаю, не один придет по этой ссылке за помощью по этому вопросу.

ivan1 ()
Ответ на: комментарий от Xintrea

Ни в одной из статей по подключению по SSH через Putty без пароля об этом шаманстве не говорится.

Хбз ... я практически сразу попал на такую где говориться. Теперь у нас в местной вики забито

Для подключения из под Windows при использовании Putty есть небольшая тонкость, несмотря на то что ПРИВАТНЫЙ ключ это просто текстовый файл, Putty, в том виде как его генерирует ssh, его не примет. Для конвертации нужна утилита PUTTYGEN.EXE из состава пакета Putty.

Запускаете, через 'Load an existing private key file' загружаете свой id_rsa. После того как введете пароль к ключу выгружаете его обратно в формате ppk через 'Save private key'

TEX ★★ ()

Астрологи объявили месяц некропостеров. Количество некропостеров возрастёт вдвое.

geekless ★★ ()

В статьях в интернете ни о каких таких свистоплясках не написано

4.2 же, это вообще секрет Полишинеля. Просто ты, видимо, никогда не сталкивался с нуждой скриптования винды с подключением по ssh к линуксу.

pekmop1024 ★★★★★ ()
Ответ на: комментарий от ukr_unix_user

А как ты выделил строку зеленым?

//captcha: was appleco

anonymous ()

Неужели всё так плохо?

Ни разу через Putty из-под Windows не ходил на FreeBSD. Тут прям откровение.

iZEN ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.