Putty подключение по ssh по ключу windows

Обновлено: 07.07.2024

Создание SSH-ключей

По умолчанию в корневой директории пользователя находится директория .ssh, если по какой то причине её нет, то создаём её командой:

1) Cоздаем открытый и закрытый ключ нашей локальной системы:

Подробнее о ключах можете посмотреть с помощью команды:

2) Если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, чтобы она авторизовывала SSH по открытому ключу:

переходим к шагу 4

3) Если ssh-copy-id нет, то можно сделать это вручную.

Вот последовательность действий:

3.1) копируем открытый ключ на удаленную систему:

3.2) Авторизуемся на удаленном сервере:

3.3) Заносим открытый ключ нашей локальный системы в авторизованные ключи удаленной системы, устанавливаем правильные права и "убираем за собой мусор":

4) Проверяем, что все работает, запускаем на локальном компьютере:

Пример автоматического подключения из Windows через Putty и PuTTYgen

Для начала скачаем с официального сайта обе утилиты отсюда.

еперь утилитой PuTTYgen сгенерируем публичный и приватный ключ. Открываем утилиту и нажимаем Generate:


После нажатия, необходимо произвольно водить мышкой для заполнения массива случайных чисел, примерно в квадрате под полосой загрузки:


По окончании процесса генерации, утилита предоставит Вам сгенерированный приватный и публичный ключ. Публичный, который обведен красным прямоугольником, нужно занести в файл authorized_keys, который находится в папке .ssh корне Вашего аккаунта на сервере, а приватный ключ сохраняем себе на компьютер. Для этого нажимаем на кнопку Save private key. Учтите, что приватный ключ нельзя ни показывать, ни передавать, иначе смысл безопасного подключения теряется.


Сейчас скопируем публичный ключ в файл .ssh/authorized_keys находящийся на Вашем аккаунте. Для этого открываем утилиту Putty:


Вводим логин пользователя (он совпадает с именем от личного кабинета):


После ввода пароля видим, что нас вежливо приветствует система:


После этого полностью копируем публичный ключ из области, выделенной красным цветом (на слайде выше), в консоли пишем cat >> .ssh/authorized_keys << EOF, нажимаем Enter, затем вставляем публичный ключ, еще раз нажимаем Enter, пишем EOF и еще раз жмем Enter:


Отлично, ключ добавлен! Теперь проверим нашу беспарольную аутентификацию. Для этого открываем еще раз Putty, переходим во вкладку Auth затем нажимаем на Browse, выбираем наш приватный ключ, который мы сгенерировали и сохранили себе:



Теперь вводим логин пользователя, который совпадает с логином от входа в личный кабинет, в нашем случае - denia0d3. Дальше жмем Enter:


После этого мы попали на сервер, заметьте, БЕЗ ввода пароля, что достаточно удобно при частых подключениях:


Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел "Помощь и поддержка".

Так как приходиться уже не первый раз объяснять как это делается, решил оформить в виде How-To в картинках
Скачиваем архив putty отсюда putty.zip
1. Распаковываем и запускаем ssh-keygen

Выбираем ключ ssh-rsa и длину 2048 бит. Жмем «Generate».


Ключ готов, заполняем кодовую фразу и комментарий к нему. Сохраняем приватный ключ как mykey.ppk и публичный как id_rsa.pub

2. Далее необходимо скопировать наш публичный ключ на сервер. Для этого запускаем psftp.
psftp: no hostname specified; use «open host.name» to connect
psftp> open myserver
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
If you trust this host, enter «y» to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter «n».
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y
login as: root
root@myserver's password:
Remote working directory is /root
psftp>put id_rsa.pub /tmp/id_rsa.pub
local:id_rsa.pub => remote:/tmp/id_rsa.pub
psftp>


3. Ключ скопировался, теперь нужно добавить его в /root/.ssh/authorized_keys
Для этого логинимся еще раз по паролю, через putty и выполняем
ssh-keygen -i -f /tmp/id_rsa.pub >> /root/.ssh/authorized_keys


Теперь осталось добавить наш ключ в ssh-agent'a. После запуска он сидит в трее, чтобы добавить ключ кликаем правой кнопкой на «Add Key»


Вводим кодовую фразу:

Теперь логинимся в putty:



Практически все, чтобы устранить проблемы с кодировками, с кривым отображением mc в путти, исправляем локаль в настроках:

Генерация SSH-ключей

Откройте приложение PuTTYgen


В открывшемся окне можно задать тип ключа шифрования и битность, либо оставить настройки по умолчанию.



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

После генерации станет доступен созданный ключ:


В этом окне можно задать дополнительные настройки:
— подписать комментарий к паре ключей (в поле «Key comment:») - удобно, чтобы отличать ключи, если вы используете несколько пар
— задать для ключа пароль (в поле «Key passphrase:» и «Confim passphrase:»). Это обеспечит дополнительную безопасность - даже в случае краже ключа сервер будет недоступен без ввода пароля. Пароль недоступен для восстановления в случае утери.

Cохраните приватный и публичный ключи. Публичный ключ устанавливается на сервер, к которому нужно выполнить подключении — по аналогии с замком. Приватный ключ используется с подключающейся стороны.

Кнопка «Save private key» сохраняет приватный ключ в формате .ppk. Для использования на виртуальных серверах, сохраните ключ под текстом «Public key for pasting into OpenSSH authorized_keys file:»

Конвертация ключа PuTTY

PuTTy использует собственный формат ключей. Поэтому если вы сгенерировали приватный ключ в личном кабинете Airnode (при помощи OpenStack) или в другой программе, а подключение к виртуальному серверу хотите делать через Putty, необходимо конвертировать приватный ключ.

Откройте приложение «PuTTYgen».

Нажмите «conversation» и выберите «Import key».


Выберите фаил с ключом и откройте его.

После этого сохраните преобразованный приватный ключ с помощью кнопки «Save private key».

Также доступна обратная процедура — если вы захотите сменить SSH-агент с PuTTy на любой другой, нужно сконвертировать ключ в формат OpenSSH.
Для этого используйте меню «Conversions / Import key»:


Как подключиться к серверу с помощью PuTTY

Запустите PuTTY (putty.exe)


Настройте новую сессию: в поле «Host Name (or IP address)» введите IP-адрес удаленного сервера, или его имя. Укажите порт службы SSH вашего сервера в поле “Port” (по умолчанию используется порт 22).


Выберем ключи для авторизации. Для этого перейдите в раздел «SSH/Auth».Нажмите «Browse» и выберите приватный ключ, сохранённый ранее.


Cохраним настройки сессии, чтобы не задавать их заново при повторных подключениях. Перейдите обратно в раздел «Session». В поле «Saved Session» задайте новое имя для сессии и нажмите «Save».

Нажмите «Open», чтобы подключиться к северу.


Может открыться предупреждение системы безопасности. Если вы доверяете хосту, нажмите «Да».

Откроется командная строка. В ней введите имя пользователя и, если потребуется, пароль.

Если вы подключаетесь к серверу, созданному в дата-центре Airnode на основе готового образы, то в качестве имени пользователя используйте имя операционной системы.Например: debian, centos, ubuntu. Пароль при этом не требуется.


Аторизация на сервер по SSH используя пароль — это не единственный, и даже не всегда безопасный метод авторизации. В «зашифрованном» мире часто прибегают к использованию публичных и приватных ключей, которые помогают авторизовать клиента на сервере не используя пароли.

Была цель — упросить авторизацию на сервер используя на windows машине клиент PuTTy. Но, как оказалось, не все так просто и прозрачно. Поискав в интернете инструкции я не нашел ни одной, в которой мне объяснили почему при генерации ключей через PuTTy-gen не получется подключится к linux серверу.

sgtatham/putty/latest.html (либо нужный архив целиком)

Немножко теории — приватные и публичные ключи RSA

Для успешной авторизации по ключам, необходимо иметь публичный ключ и приватный ключ. Все ключи на linux машине хранятся в домашнем каталоге пользователя, в папке .ssh «/home/user/.ssh/».

На сервере хранится публичный ключ. Этот ключ имеет запись одной строкой вида
«ssh-rsa AAAABG.. ..+qxQ== rsa-key-20180322»
По умолчанию ключи хранятся в файле authorized_keys. В этом файле могут хранится сразу несколько ключей, просто записываются каждый на строку.
Название файла можно поменять, но тогда нужно это явно указать в конфигурационном файле SSH сервера — /etc/ssh/sshd_config (нужна перезагрузка sshd).
«AuthorizedKeysFile %h/.ssh/authorized_keys»

На клиенте (linux) хранится приватный ключ. Ключ имеет запись вида
——BEGIN RSA PRIVATE KEY——
MIIEoQIBAAKCAQEAjIDrQgbCcRXrGms9kHutJhU6+kopZ1IRca8WalZ/jLr6tyjs
….
….
Hp5ygfYqspTYzGIqsPvYYPMlyg7Jrx8hiEwbbz4Ohpqq6hgvVQ==
——END RSA PRIVATE KEY——

Важно, права на ключ id_rsa должны быть выставлены 600 (rw——-)

При использовании клиента PuTTy, приватный ключ может иметь любое название его нужно указывать при подключении к серверу. Либо использовать агент Pageant.

Вариант первый: генерируем ключи на linux.

Тут все просто, поможет нам утилита ssh-keygen. Неважно где создавать ключи. Но для примера сделаем это на сервере.

Запускаем утлиту ssh-keygen


Программа спросит куда сохранить ключи и предложит задать пароль. Смело нажимаем два раза enter и получем результат.
Теперь у нас есть два ключа, которые были сохранены в директорию .ssh: id_rsa — приватный ключ и id_rsa.pub — публичный ключ.
Ключи выглядят в виде текста. По этому их можно легко скопировать и вставить в нужный файл.


Теперь заходим на удаленный сервер уже без пароля.

Следующий шаг — авторизация на сервер с помощью программы PuTTy

Копируем содержимое ключа id_rsa, вставляем куда-нибудь в блокнотик и сохраняем без расширения.
Открываем программу PuTTy Key Generator и загружаем наш ключ кнопкой «Load»


Далее открываем клиент PuTTy. Как обычно в главном окне указываем куда подключаемся, а с левой стороны выбираем «Connection -> Auth», в окошке выбираем наш ключ.


Подключаемся, видим предупреждение и подтверждаем «Yes»


И мы попадаем на сервер без пароля


Вариант второй: генерируем ключи через программу PuTTy Key Generator

Открываем программу, ничего не меняем и не выбираем, нажимаем кнопку «Generate»


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

А вот для клиента, то есть приватный ключ мы можем сохранить двумя путями
1) Нажав на кнопку сохранить, мы сохраним ключ в формате PuTTy, и пользоваться можем только это программой.
2) Для клиента в linux мы должны экспортировать ключ в старый формат pem. Converisons -> Export OpenSSH key. Этот ключ мы должны разместить в папке .ssh с названием id_rsa, не забыв поменять права на 600.

В комплекте с архивом PuTTy, на который указал ссылку в самом начале, есть утилита Pageant — агент для авторизации SSH, некий менеджер приватных ключей.
С ее помощью не нужно указывать каждый раз ключ.


Читайте также: