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:
adduser us3r --disabled-password
You will be asked to fill in some details such as the user’s real name (empty string is fine).
Now type:
su us3r cd /home/us3r mkdir .ssh chmod 700 .ssh cd .ssh
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!!!)
- Do not add the email@example.com at the end of the line.
- Do not add the BEGIN PUBLIC KEY or END PUBLIC KEY.
- Do not add the rsa-key-20090211 at the end.
- Make sure, there is ssh-rsa at the beginning.
It should be something like:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBf3inevLchN36/bjLulNKDOnWTd/12I2QkM+o3uxg4C…
Type:
chmod 600 authorized_keys2
Add Private key to PuTTY SSH authentication agent
Start the PuTTY SSH authentication agent PAGEANT.EXE. When started, right-click its systray icon and select «add key». Select your private key file, and type in your passphrase when you add the key. The Pageant works as a passphrase keeper.
Use PuTTY to connect to your server
Open PuTTY and connect as us3r@putty.org.ru
:
See that you log in without a password …
PuTTY is the de-facto standard way to connect via SSH from a Microsoft Windows machine.
Configuring ssh keys on Windows is not so simple, since loading them at boot time requires much more steps, according to me, than on the Linux/Unix side.
In order to load automatically the keys, there is the need for the PuTTY Authentication Agent named pageant
. I suspect the name of the executable is mispelled with regard to the name of the application, since it seems to be PuTTY AGEnt for Autenthication NT (which could be the famous version of Windows, I don’t know).
Here’s how I configure it, after having generated the SSH keys on the Windows machine.
Step 1: Enable pageant
at boot time
Open the file browser and manually edit the path so to enter into the Users\AppData\Roaming\Microsoft\Windows\StartMenu\
and then find the folder for the automatic execution of applications once you log in. Copy a link to the pageant
application from your PuTTY installation.
Now edit the link you just created, by means of right clicking it and selection properties, and find out the command that is executed. Append to the command the location of the key you want to be loaded (full path in double quotes).
Step 2: Logout and ensure pageant
is running
Reboot (or simply logout and login again) to ensure that pageant
is running. After a few seconds from the login, you should see a window appearing and prompting you for the passphrase.
If that is the case, everything is setup correctly and you can see the icon of the application in the tray.
The article Automatically load Putty SSH Agent (pageant) on Windows
has been posted by
Luca Ferrari
on July 14, 2023
Вы еще не авторизуетесь по ключам? Тогда мы идем к вам
Время на прочтение3 мин
Количество просмотров193K
Есть куда более полезная и подробная памятка по ssh от amarao, а эта статья пусть останется в том виде, в котором была написана в далеком 2011.
Этой заметкой я хочу показать, что использовать ключи для авторизации это просто.
Начнем с того, что нам понадобится PuTTY.
Идем на http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html и качаем следующее:
PuTTY — ssh-клиент
Pageant — агент для хранения ключей (зачем объясню позже)
PuTTYgen — генератор ключей
Сначала сгенерируем ключи, потом настроим PuTTY, и в конце покажу как всем этим пользоваться.
Создадим папочку для PuTTY и все скинем туда.
Запускаем PuTTYgen выбираем «Type of key to generate» SSH-2 RSA и 2048-битный ключ.
Жмем Generate. Следуя указациям, хаотично перемещаем мышку.
После генерации нам предстанет следующее.
В верхнем поле публичный ключ, который будет храниться у принимающей стороны.
Ах да, я забыл рассказать как происходит непосредственная авторизация с помощью ключей.
Для наглядности возьмем server и client.
client сообщает server’у свой публичный ключ любым доступным способом. Беспокоиться, что кто-то узнает этот ключ не стоит.
Авторизация происходит следующем образом:
дальше следует объяснение человека, который не читал соответствующей литературы, поэтому описывает так, как он себе это представляет
client обращается к server’у и они обмениваются публичными ключами.
на основании этого server авторизует client’а, дает соответствующие права.
Это было небольшое отступление, вернемся к PuTTYgen.
В верхнем поле публичный ключ, который будет храниться у принимающей стороны.
Key fingerprint — отпечаток ключа.
Key comment — комментарий к ключу, я обычно указываю машину, на которой это ключ используется.
Key passphrase — парольная фраза к приватному ключу. Ее следует сделать сложной. Конечно можно оставить пустой, и тогда при авторизации не будет требоваться пароль, но дальше я покажу, что даже с сложным паролем к ключу можно авторизовываться без повторного ввода пароля, будто пароля и нет.
Confirm passphrase — подтверждение парольной фразы.
Дальше нужно сохранить сгенерированные ключи. Остановлюсь только на приватном ключе. При сохранении (Save private key) предложится сохранить ключ с расширением .ppk. Он будет использоваться Pageant в дальнейшем.
Перед тем, как мы перейдем к настройке PuTTY, расскажу о возможности восстановить публичный ключ из приватного с помощью PuTTYgen.
Для этого нужно нажать кнопку Load. Указать приватный ключ. Ввести парольную фразу (если имеется) и отобразится точно такое же окно, как на предыдущем скриншоте.
Теперь запустим PuTTY и сделаем предварительные настройки.
Выберем Default Settings и нажмем Load.
Перейдем слева на Session->Logging, отметим галочкой Printable output. В поле Log file name впишем logs\&H_&Y-&M-&D-&T.log, уберем галочку Flush log file frequently.
Таким образом, мы указали, что хранить логи будем в папочке logs, рядом с PuTTY.exe с именами на подобии 192.168.1.6_2011-08-29-101304.log
Перейдем на вкладку Window->Translation. И выберим в списке Remote character set UTF-8, чтобы не было проблем с кодировкой.
В Connection->SSH->Auth проверим, что стоит галочка напротив Attempt authentication using Pageant и укажем путь к приватному ключу в графе Private key file for authentication.
После этого вернемся на вкладку Session нажмем сохранить, чтобы указанные настройки были по-умолчанию.
Пришло время показать работу авторизации, используя ключи, на практике.
Воспользуемся агентом для хранения ключей Pageant.
После запуска, появится иконка в области уведомлений. Жмем правой кнопкой, Add key.
Выбираем ключ, указываем парольную фразу. Теперь ключ хранится в памяти.
Чтобы посмотреть ключи, можно выбрать пункт View keys.
Попробуем авторизоваться.
Открываем PuTTY. Указываем IP. Жмем Open.
В первый раз выскочит предупреждение, что раньше мы не использовали ключ для авторизации на этом сервере. Когда такое возникает впервый раз, это нормально, но если такое возникает на сервере, на котором мы уже авторизовывались, то либо сервер сменил свои ключи, либо это фейковый сервер.
Вводим логин. Жмем Enter. И мы автоматически авторизовались.
Покажу еще, на примере Komodo Edit.
Выбираем File->Open->Remote open
Выбираем Accounts. Потом New Server.
В Server Type указываем SCP. В Name произвольное название для сервера. В Hostname ip сервера (или доменное имя). В User Name логин пользователя.
Жмем Add, затем OK.
В верхнем выпадающем меню выбираем наш сервер. Если сервер разрешает авторизацию по ключам, то мы увидим список директорий на сервере, выбираем нужный файл и редактируем (при наличии прав на запись у пользователя).
PS: Следующая ошибка появляется в том случае, если сервер поддерживает только авторизацию по ключам, а у вас не включен Pageant.
PS2:
Не пропустите полезную статью Памятка пользователям ssh
Материал из DiPHOST.Ru wiki system
Перейти к: навигация, поиск
Агент является постоянно находящейся в памяти программой, цель которой — хранить раскодированные секретные ключи. Сделано это просто для удобства, чтобы не приходилось при каждом соединении по ключу вводить пароль для разблокирования секретного ключа. Подробнее о роли агента можно прочесть в нашей специальной статье об аутентификации SSH при помощи публичного ключа. В случае PuTTY требуется просто запустить программу Pageant из поставки PuTTY.
Программа создаёт иконку в системной области. При помощи этой иконки можно управлять агентом, смотреть список ключей, добавлять ключи, запускать сессии SSH. Для добавления ключа просто нажмите Add Key и выберите файл секретного ключа, сохранённый ранее. Если ключ защищён паролем, агент попросит ввести его. Никаких дополнительных настроек не требуется, PuTTY сам определит наличие агента. Примерно так будет выглядеть окно списка ключей:
Встречаются ситуации, когда есть несколько серверов, к каждому из которых имеется доступ SSH по ключам и требуется установить соединение с одного сервера на другой. Например, чтобы передать файл. Обычно аутентификация по ключам не настроена между серверами, а пароль очень сложен или вообще отсутствует. Для упрощения выхода из этой ситуации существует технология перенаправления агента. Запущенный клиент SSH на удалённом сервере будет пользоваться Вашим локальным агентом как-будто бы своим. Работать это будет только с удалённым сервером реализации OpenSSH, но таких подавляющее большинство. Для настройки перенаправления агента об этом просто надо сказать PuTTY. В разделе Connection->SSH->Auth установите чекбокс Allow agent forwarding:
Не забудьте сохранить настройки. Соединитесь с удалённым сервером и проверьте, что перенаправление работает (создан сокет, работа с которым собственно и перенаправляется на локальную машину):
ВНИМАНИЕ! Помните, что суперюзер сервера — root — имеет доступ ко всем открытым сокетам, и в теории легко может получить доступ ко ВСЕМ ключам Вашего агента. |
- Настройка подключения PuTTY
- Настройка аутентификации по ключу в PuTTY
- Перенаправление портов в PuTTY
A quick post on how to forward SSH key in Putty on Windows.
Let’s start with some basics about SSH key/agent forwarding. Then we will dive into how to configure it in putty.
What is SSH key/agent forwarding?
Traditionally we used to have password-based authentication for Linux servers. In this age of cloud, all the Linux servers deployed in the cloud come with default key-based authentication Authentication is done using pair of keys: Private key (with user) and Public key (stored on server). So every time you connect to the server you need to supply your private key for authentication.
If you are using some jump server or bastion host for connecting servers then you need to store your private key on that server (jump/bastion). So that it can be used for authentication when connecting to servers. This leaves a security risk of the private key being exposed/accessed by other users of jump/bastion host.
In such a scenario, SSH agent forwarding should be used. SSH agent forwarding allows you to forward the SSH key remotely. That means you can authenticate without storing the key on the jump/bastion host! Putty takes care of using the key stored on your local computer and forward it so that it can be used for remote authentications.
How to configure SSH agent forwarding in Putty?
It can be done by using utility pagent.exe which comes with PuTTY. pagent.exe is an SSH authentication agent for PuTTY. It can be downloaded for free from PuTTY website along with the PuTTY executable.
Now Open pagent.exe. It will start in the background. You can click on pagent icon in the taskbar and bring it to the foreground. You should see the below screen –
Click on the Add Key button. Browse your PPK key stored on the local computer and click Open. Key will be added to the database and you should see it in the key list as below –
Now click the Close button. Make sure pagent is running in the background. And open PuTTY. In the left panel of the category, goto Connection > SSH > Auth and select the checkbox next to Allow agent forwarding
Now you are ready to connect to your jump/bastion host. And from there to the remote Linux machines. You will not be prompted for key since it’s already added to pagent and PuTTY is making sure to forward it for further connections!
Below is my test where I connected my instance in a private subnet without supplying the SSH key in command.
That’s all! You can add a number of keys in pagent and use them without leaving a key footprint on intermediate servers!