Я настроил свой сервер Linux на прием подключений от домашнего компьютера, добавив открытый ключ, сгенерированный puttygen, в файл authorized_keys.
Сейчас я пытаюсь подключиться к той же машине, но на этот раз с другой машины Ubuntu. Мне нужно использовать один и тот же закрытый ключ (по странной причине, не спрашивайте ..), и я не совсем понимаю, как установить его на свой клиент Ubuntu.
Нужно ли конвертировать его в какой-нибудь другой формат?
Я не уверен, будет ли ваш приватный ключ работать в Ubuntu, но стоит попробовать. просто скопируйте ключи в /home/yourName/.ssh/
и назовите приватный ключ как id_rsa
, а открытый ключ как id_rsa.pub
.
Если это не работает, то вы можете создать свою пару ключей ssh, используя ssh-keygen
, и скопировать новый открытый ключ на сервер, и ssh следующим образом
ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>
Я не играл с ним, но я слышал, что ssh-agent также можно использовать для управления ssh-клавишами.
Я нашел еще одно ясное решение.
На puttygen
создайте ключ, затем перейдите в Верхнее меню - Convers ion и щелкните экспорт ключа openssh
Содержимое файла будет начинаться и заканчиваться на
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
для пользователя root. Скопируйте этот файл ключа в /root/.ssh/
как id_rsa
или id_dsa
для другого пользователя Скопируйте этот файл ключа в /home/user/.ssh/
как id_rsa
или id_dsa
Примечание:
authorized_keys
. * * Будьте осторожны и убедитесь, что у вас есть консольный доступ к ящику, потому что, если вы не сделаете это правильно, вы не сможете снова подключиться по ssh, пока не исправите это с консоли.
Процесс намного проще, чем вы думаете. Снова загрузите созданную вами пару открытого и закрытого ключей в puttygen. В puttygen вы увидите окно в середине экрана, в котором говорится: «Открытый ключ для вставки в файл Open SSH authorized_keys:».
выделите все содержимое окна и нажмите Ctrl-c, чтобы скопировать его.
SSH в вашем Linux-окне и вставьте его в файл "/home/username/.ssh/authorized_keys". Я предпочитаю использовать nano и просто щелкаю правой кнопкой мыши, чтобы вставить его. Убедитесь, что все это остается в одной строке.
Измените файл / etc / sshd_config по мере необходимости и перезапустите службу sshd: "service ssh restart"
Если вам нужен образец файла sshd_config, дайте мне знать, и я могу опубликовать свой.
Я сделал это на сервере LTS Ubuntu 8.04, 10.04 и 12.04, и он отлично работает.
По стечению обстоятельств, я просто должен был это сделать. Вам действительно нужно конвертировать ключи в формат OpenSSH. Команда для этого:
ssh-keygen -i -f puttygen_key > openssh_key
затем вы можете скопировать содержимое openssh_key
в .ssh/authorized_keys
так же, как и обычный SSH ключ.
Опция -i
сообщает ssh-keygen
, что нужно сделать преобразование. Опция -f
сообщает, где искать ключ для преобразования.
Это работает для незашифрованных ключей. Открытый ключ является нешифрованным, но закрытый ключ, скорее всего, зашифрован. Я не уверен, есть ли способ расшифровать закрытый ключ, преобразовать его, а затем перезашифровать. Возможно, будет проще использовать новые ключи, как предполагает другой ответ (и я бы порекомендовал использовать ssh-agent
, хотя это ортогонально текущему вопросу).
Andrew Stacey explained how to convert the keys to OpenSSH format on Linux.
Если вы хотите сделать то же самое на Windows, выполните следующие шаги:
Как повторно использовать пары ключей Putty в Ubuntu в качестве ключей OpenSSH:
apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub
Так как целью шага 4 является добавление открытого ключа в *~. /ssh/authorized_keys*, так что вы можете использовать ваш секретный ключ Putty таким образом, вместо того, чтобы делать 4 в качестве промежуточного шага:
puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys
PuTTY / PuTTYgen использует свой собственный формат пары ключей. Это не будет работать в Linux, где преобладает формат ключей OpenSSH.
В PuTTYgen вы можете напрямую видеть (и копировать + вставлять) открытый ключ в формате, используемом OpenSSH Author_keys
файл.
Вы можете использовать кнопку Сохранить открытый ключ , чтобы сохранить открытый ключ в формате .pub
(RFC 4716). В Linux файл обычно называется id_rsa.pub
(или id_dsa.pub
). Но обычно в этом нет необходимости.
Используйте Конверсии> Экспорт ключа OpenSSH , чтобы экспортировать закрытый ключ в формате OpenSSH. В Linux файл обычно называется id_rsa
(или id_dsa
) и хранится в папке .ssh
.
См. Официальную Используя PuTTYgen, генератор ключей PuTTY .
Для преобразования можно также использовать версию PuTTYgen для Linux. Версия для Linux - это командная строка, в отличие от версии для Windows.
puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa
См. Справочную страницу Linux puttygen
.
Я не уверен, активен ли этот поток, но я наткнулся на аналогичную проблему с юбилейной версией Windows 10, которая теперь поддерживает ядро Ubuntu. Раньше я использовал Putty для подключения к машине Linux. Для генерации id_rsa в формате linux используйте puttykeygen и загрузите свой закрытый ключ putty, затем нажмите на преобразование и выберите второй вариант.
Putty KeyGenerator conevrsions
откройте вновь созданный файл ключа и скопируйте все его содержимое, убедитесь, что ваш контент начинается с: ----- BEGIN RSA PRIVATE KEY ----- и заканчивается на ----- END RSA PRIVATE KEY -----
vi id_rsa внутри вашего ~ / .ssh и вставьте скопированное содержимое, это необходимо, потому что в противном случае Linux не поймет содержимое файла.
Вот и все, попробуйте ssh на удаленный сервер, он должен работать.
Самый простой способ установить закрытые ключи OpenSSH - создать или отредактировать ~ / .ssh / config
, как указано ниже. Вам необходимо экспортировать свой закрытый ключ PuTTY как ключ OpenSSH.
Лучший способ использовать несколько закрытых ключей SSH на одном клиенте
Host myshortname realname.example.com
HostName realname.example.com
IdentityFile ~/.ssh/realname_rsa # private key for realname
User remoteusername
Host myother realname2.example.org
HostName realname2.example.org
IdentityFile ~/.ssh/realname2_rsa # different private key for realname2
User remoteusername
Это работает в Linux, macOS, Windows, GIT при использовании OpenSSH.