🗝 Не выкидывай свои ppk-ключи при переходе на Mac и Linux

Простой способ сконвертировать свои приватные ключи, созданные в Putty под Windows, чтобы пользоваться ими под Mac и Linux без перенастройки удаленных серверов

Спустя полгода после переезда под MacOS мне понадобилось залогиниться на один Ubuntu-сервер, доступ к которому у меня был по ключу, сгенерированному в puttygen под Windows.

Достучатся до админа сервера не получилось, а переконфигурировать сервер надо было быстро. После пары минут в поисковике я нашел способ конвертировать ключи ppk, созданные putty под Windows, в ключи формата OpenSSH, которые понимают ssh-клиенты под Mac и Linux.

Устанавливаем putty на Mac (или Linux)

Под MacOS самый удобный способ установить putty (и все сопутствующие ему приложения вроде puttygen) через Homebrew:

$ brew install putty

Теперь нам доступна утилита puttygen.

Под Linux все это тоже работает, там просто пишете:
sudo apt install… ну, вы знаете.

Конвертируем ключи

Мой приватный ключ называется stena.ppk, поэтому я пишу в консоли:

$ puttygen stena.ppk -O private-openssh -o ~/.ssh/stena

Тем самым говорю утилите:

  • возьми мой приватный ключ в формате ppk,
  • конвертируй его в приватный ключ в формате OpenSSH
  • и положи в папку .ssh в домашнем каталоге текущего пользователя под именем stena.

Не уходя далеко, из того же самого приватного ключа делаем публичный (на всякий случай):

$ puttygen stena.ppk -O public-openssh -o ~/.ssh/stena.pub

Аналогично, просим утилиту:

  • возьми мой приватный ключ в формате ppk,
  • конвертируй его в публичный ключ в формате OpenSSH
  • и положи в папку .shh под именем stena.pub.

Обновляем права доступа к файлам ключей

На только что созданные ключи терминальный ssh начал ругаться, что их права доступа «слишком открыты (too open)». Пришлось изменить права к файлам вот такими командами:

$ cd ~/.ssh
$ chmod 0600 stena stena.pub

Что означает — я перехожу в директорию с ключами и устанавливаю возможность читать и писать в эти файлы только владельцу, то есть мне.

Подключаемся по ssh к удаленному серверу с новым ключом

Для подключения к серверу пишем в терминале:

ssh -i ~/.ssh/stena pavlov@10.152.2.60

Соответственно, показываю ssh-клиенту, где лежит новый приватный ключ, ну, и имя пользователя с адресом сервера.

Публичный ключ, кстати, на удаленном сервере обновлять не нужно. Их форматы отличаются не настолько, чтобы из-за этого возникла несовместимость.

Слева публичный ключ, сгенерированный Putty, а справа — сконвертированный в OpenSSH. Отличаются они переносами строк в теле ключа и оформлением начальных и конечных меток. Удаленный сервер на Ubuntu считает их идентичными

Замечательно, что есть версия putty для Mac и Linux. С помощью этой утилиты можно сэкономить кучу времени, особенно, если ваши публичные ключи разложены по большому количеству серверов. Меньше головной боли для админов. Здоровья им.