How To Configure SSH Keys Authentication With PuTTY And Linux Server
This tutorial explains how you can replace password-based SSH authentication with key-based authentication which is more secure because only the people that own the key can log in. In this example, we’re using PuTTY as our SSH client on a Windows system.
Generate a private and public key pair
Open PuTTYgen.exe, press Generate button, move mouse. Once the keys are generated, type your key passphrase (choose a «hard to guess» one). Save Public key. Save Private key.

Configure your Linux server (create user, save public key)
For this guide let’s assume you regular login name is us3r (replace it with one that you use regularly).
As root, on the shell, type:
You will be asked to fill in some details such as the user’s real name (empty string is fine).
Then in that folder, create and edit a file called authorized_keys2 .
In there, cut/paste your public ssh key, on ONE LINE (That is very important. )
Introduction
You typically connect to a non-Windows machine remotely using SSH that can used a variety of authentication mechanisms. The easiest one is password based, however you may like to automate this by using Public Key Authentication.
This post describes how you can setup key based authentication for connecting to a Ubuntu machine running an OpenSSH server from Windows.
Requirements
- Putty (SSH client on Windows)
- PuttyGen (Putty Key Generator)
- You have already have password based SSH connection setup.
Mechanism
Generate Key Pair
- Run PuTTYgen
- Under Parameters, increase the Number of bits in a generated key: to a minimum value of 2048.
- Under Actions / Generate a public/private key pair, click Generate.
You will be instructed to move the mouse cursor around within the PuTTY Key Generator window as a randomizer to generate the private key. - Save the private key to the desktop as id_rsa.ppk or your preferred filename.
- Copy the public key in the box under Key / Public key to the clipboard.
Transfer Public Key to Server
- Navigate to cd
Connect using key based authentication
- Enter the remote server Host Name or IP address under Session .
- Navigate to Connection > SSH > Auth .
- Click Browse. under Authentication parameters / Private key file for authentication .
- Locate the id_rsa.ppk private key and click Open .
- Optionally, back in Session, type in an identifying name and click Save. This will save you from repeating these steps every time you want connect to this host.
- Finally, click Open again to log into the remote server with key pair authentication.
Before you go
Follow me on Twitter, where I regularly tweet about Technology and Business.
Использование putty и ssh ключей в Windows
Так как приходиться уже не первый раз объяснять как это делается, решил оформить в виде 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 авторизация по ключам. PuTTy

Аторизация на сервер по SSH используя пароль — это не единственный, и даже не всегда безопасный метод авторизации. В «зашифрованном» мире часто прибегают к использованию публичных и приватных ключей, которые помогают авторизовать клиента на сервере не используя пароли.
Была цель — упросить авторизацию на сервер используя на windows машине клиент PuTTy. Но, как оказалось, не все так просто и прозрачно. Поискав в интернете инструкции я не нашел ни одной, в которой мне объяснили почему при генерации ключей через PuTTy-gen не получется подключится к linux серверу.
Есть несколько варинатов. Подключение с linux на linux и с windows на linux (используя PuTTy). И два метода генерации ключей — на linux машине, используя openssh и через PuTTy Key Generator.
Все необходимые программы можно скачать https://www.chiark.greenend.org.uk/
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——
В отличии от публичного ключа, каждый приватный ключ это отдельный файл. При подключении к серверу, клиент ssh проверяет в папке .ssh наличие такого ключа. Название по умолчанию должно быть id_rsa. Если задано другое название или ключ лежит в другой директории, то это нужно указать: ssh user@example.com -i /home/user2/id_rsa2.
Важно, права на ключ id_rsa должны быть выставлены 600 (rw——-)
При использовании клиента PuTTy, приватный ключ может иметь любое название его нужно указывать при подключении к серверу. Либо использовать агент Pageant.
Вариант первый: генерируем ключи на linux.
Тут все просто, поможет нам утилита ssh-keygen. Неважно где создавать ключи. Но для примера сделаем это на сервере.
Запускаем утлиту ssh-keygen

Программа спросит куда сохранить ключи и предложит задать пароль. Смело нажимаем два раза enter и получем результат.
Теперь у нас есть два ключа, которые были сохранены в директорию .ssh: id_rsa — приватный ключ и id_rsa.pub — публичный ключ.
Ключи выглядят в виде текста. По этому их можно легко скопировать и вставить в нужный файл.
Заходим в папку .ssh.
На сервере выполняем cat id_rsa.pub > authorized_keys — так мы запишем наш ключ в нужный файл
На сторону клиента можно скопировать текст ключа id_rsa. Меняем файлу права chmod -c 0600 id_rsa.

Теперь заходим на удаленный сервер уже без пароля.
Следующий шаг — авторизация на сервер с помощью программы 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, некий менеджер приватных ключей.
С ее помощью не нужно указывать каждый раз ключ.

Теперь, когда организован доступ по ключам, можно поменять пароль пользователя на что-нибудь вида 022c1e7bd6959f2a0d8e10868976e657 и не думать о нем. Либо, для надежности можно вообще убрать авторизацию по паролю в конфиг файле /etc/ssh/sshd_config, раскомментировав строку #UseLogin no