Putty ssh keys authorization windows

SSH авторизация по ключу через PuTTY

На сегодняшний день набирает обороты практика аутентификации к SSH-серверу по ключу, в этом есть несколько преимуществ:

  • Удобство в использовании. У вас может быть несколько серверов и один ключ, не нужно всякий раз вводить пароль от нужного сервера, что сэкономит время.
  • Это безопасно. Вы сможете отключить аутентификацию по паролю и ssh будет защищён от брутфорса.

В это статье мы настроим SSH авторизации на сервере CentOS 7 по ключу, и настроем подключение через ключ утилиту PuTTY.

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

Для генерации ключа будем использовать утилиту PuTTYgen. После запуска выбираем тип ключа для генерации — SSH-2 RSA, и длину ключа — 2048 бит. После чего нажимаем Generate и крутим мышкой по окну пока не закончится генерация ключа.

  • Key comment — комментарий к ключу.
  • Key passphrase — парольная фраза к приватному ключу. (Не обязательно к заполнению)
  • Confirm passphrase — подтверждение парольной фразы.

Если вы хотите обезопасить себя по максимальному вы можете задать пароль для защиты приватного ключа в полях Key Passphrase и Confirm Passphrase. Но при каждом входе у вас будет запрашивать пароль который вы ввели. Это обезопасит вас если ваш приватный ключ будет похищен.

Далее сохраняем public key и private key. Приватный ключ мы будем использовать для подключения к серверу, а вот публичный ключ надо будет передать на удаленный сервер которому мы будем подключаться.

Обратите внимания на то как был сгенерирован ваш публичный ключ.

Лично у меня он был сгенерирован не совсем верно, вот пример public_key в дальнейшем при подключении через PuTTY с таким ключом могут возникнуть ошибка Server refused our key.

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

Установка публичного ключа на сервере

Далее необходимо скопировать наш публичный ключ на сервер. Мы воспользуемся для передачи на сервер ключа утилитой PSFTP, но вам ничего не мешает его передать через любой FTP клиент.

Ключ с копировался, теперь нужно добавить его в

/.ssh/authorized_keys. Далее логинемся еще раз по паролю, через PuTTY и выполняем:

Далее нужно проверить настройки нашего SSH сервера, сами настройки лежат в файле /etc/ssh/sshd_config:

Теперь нам надо будет перезапустить SSH сервер:

Теперь мы можем подключиться к серверу по ключу или паролю.

Но мы можем вообще запретить подключатся к SSH серверу по паролю указав в файле /etc/ssh/sshd_config.

После чего не забываем заново перезапустить SSH сервер.

Настройка и подключения PuTTY

Теперь все что нам осталась это создать новый сеанс и настроить его подключения к SSH серверу по ключу.

Создаем новый сеанс пиши на IP Адрес к серверу.

Далее, мы выбираем меню категорию SSH и там выберем под категорию Auth

В поле Private key file for authentication загружаем наш приватный ключ.

Далее переходим обратно в раздел Session и сохраняем нашу сессию для того чтобы следующий раз не заполнять все эти поля.

Остаётся только проверить правильность аутентификации к SSH серверу по ключу. Запустите PuTTY и подключитесь к своему серверу. Если вы при создании, ключа заполнили поле Key Passphrase и Confirm Passphrase то вас запросит вести этот пароль. Если же всё настроено неправильно, то будет выдано сообщение об ошибке и предложено ввести пароль.

Блог системного администратора Windows/Linux/FreeBSD

Авторизация по ключам в Putty (ssh)

В этой статье будет описан процесс авторизации по ключу в putty для ssh-сессий.
Делается это для того, чтобы не вводить постоянно пароль.
Первым делом скачивается набор утилит Putty. Нам понадобится PuTTY.exe, puttygen.exe, PSFTP.exe, Pageant.exe
Открываем puttygen.exe. Тут будет происходить генерация ключей.
Выбираем «Тип ключа для генерации» — SSH-2 RSA, силу ключа — 2048. Жмем генерировать. Видим следующее:

Читайте также:  Linux echo экранирование символов

Key comment/Комментарий — вводим комментарий к ключу.
Key passphrase/Парольная фраза — парольная фраза к приватному ключу. Её нужно будет вводить при подключении или же хранить в памяти Pageant.exe. Можно оставить пустой.
Confirm passphrase — подтверждение парольной фразы.

Далее сохраняем открытый ключ и личный ключ. Приватный ключ нужно сохранить в укромном месте, а публичный ключ нужно будет закидывать на удаленный сервер, с которым настраиваем авторизацию. Для этого можете использовать любые удобные вам средства. В статье будем использовать PSFTP из комплекта putty.
Запускаем PSFTP.exe. Логинимся к вашему серверу:

Логин и пароль как и от ssh.
Копируем публичный ключ на сервер в любую папку:

Готово.
Так как ключ был создан в putty, то его надо «преобразовать» в формат, понятный linux или freebsd. Заодно пересохраним ключи в нужное место.
Логинимся к серверу по ssh.
Переходим в папку со скопированным ключом и выполняем команду:

Если папки .ssh нет, то создайте её с правами 700. Все файлы в этой папке должны иметь права 600.
SSH-демон должен автоматически подхватить все эти дела, теперь перейдем к настройке Putty.

Открываем Putty, вводим параметры подключения к серверу (адрес, порт, имя сеанса), переходим на вкладку SSH-аутентификация:

Указываем путь к приватному ключу.
Возвращаемся к настройкам сеанса, жмем сохранить сеанс. В принципе все готово. При такой настройке вам придется вводить парольную фразу ключа при каждом подключении. Если вам лень это делать, то запустите Pageant.exe, в меню утилиты добавьте нужный ключ и введите один раз парольную фразу. Утилита Pageant сохранит в памяти парольную фразу и при подключении к серверу вводить её не надо. Но, стоит отметить, что при закрытии этой утилиты, все ключи удаляются из памяти и вам снова придется проделывать процедуру добавления ключей в Pageant.

Также возможна обратная операция генерации ключей на сервере и использование этих ключей в putty. Но, об этом в другой раз.

SSH — авторизация по ключу из Windows. Putty — беспарольная авторизация

Основной принцип работы авторизации по ключам: пользователь создает свой приватный ключ, на основе его генерирует публичный ключ и размещает его на сервере(ах), на который планирует заходить по SSH. Публичный ключ не является секретом и может быть разослан сторонним не доверенным людям для того, чтобы они могли выдать вам доступ по SSH к любым, подконтрольным им серверам или другому оборудованию.

Приватный ключ должен всегда храниться исключительно у его владельца. Для большей надежности на приватный ключ можно установить пароль — в этом случае воспользоваться им можно будет только зная парольную фразу. Восстановить пароль возможно исключительно методом перебора (brutforce), но если парольная фраза будет состоять из 12 и более символов, решить такую задачу будет возможно только на достаточно мощном оборудовании за весьма продолжительное время. В случае утери приватного ключа необходимо сгенерировать новый и заменить все публичные ключи.

Основное преимущество ключей в том, что они, в отличие от паролей, не передаются по сети и не могут быть скомпрометированы путем расшифровки трафика. Как это работает весьма доступно рассказано в этом видео: Алгоритм Диффи-Хеллмана .

Putty

Самая распространенная программа для доступа по SSH в Windows — Putty. Официальный сайт, где можно скачать инсталлятор и исходные коды ПО: chiark.greenend.org.uk . Putty распространяется бесплатно.

Для авторизации по ключу понадобится 3 программы, входящие в состав Putty: putty.exe, puttygen.exe и pageant.exe — можно скачать инсталлятор (putty-0.XX-installer.msi), который установит все сразу, либо же скачать каждую утилиту отдельно. Все утилиты желательно хранить в директории(ях), которые не содержат пробелов, например сразу после установки переместить все файлы Putty из C:\Program Files\Putty в C:\Putty — для авторизации по ключам через Putty это не критично, но директории с пробелами могут сыграть злую шутку в будущем, например, при настройке авторизации по ключам в Git.

Создание ключа в Putty — Puttygen

За создание и работу с ключами отвечает утилита puttygen.exe. Запустите её и оставьте значения по умолчанию:

  • «Type of key to generate»: SSH-2 RSA
  • «Number of bits in a generated key»: 2048,

После этого нажмите кнопку «Generate». Теперь необходимо перемещать указатель мыши по экрану, пока не будет сгенерирован ключ — это займет пару десятков секунд. После этого можно задать пароль для приватного ключа (заполнить Key passphrase и повторить пароль в Confirm passphrase), комментарий (будет доступен всем, кто получит доступ к публичному ключу) и сохранить приватный ключ в надежное место, нажав на кнопку «Save private key». Файл ключа RSA 2048 bit будет занимать около 500 байт.

Читайте также:  Не включается режим восстановления mac os

Приватный ключ Putty сохраняется в файл с расширением ppk и будет работать только с Putty. Если необходимо использовать приватный ключ на компьютере с Linux + OpenSSH его необходимо конвертировать в формат OpenSSH воспользовавшись верхним меню утилиты «PuTTY Key Generator»: Conversion -> Export OpenSSH key.

Публичный ключ можно получить в любой момент, загрузив приватный в puttygen.exe (кнопка «Load») и сохранить его нажатием кнопки «Save public key». Стоит только учесть один важный момент: для использования публичного ключа в OpenSSH сохраненный файл не подойдет, так как для OpenSSH необходимо, чтобы публичные ключи в authorized_keys были одной строкой без лишних символов. Получить непрерывный ключ можно скопировав его из поля «Public key for pasting into OpenSSH authorized_keys file» — только будьте внимательны, в этом поле есть полоса прокрутки и скопировать нужно весь публичный ключ.

Подключение к серверу с использованием Putty и авторизации по ключу

Запускаем Putty и настраиваем подключение. Выбираем «Default Settings» и нажимаем кнопку «Load». В Connection->SSH->Auth указываем путь к приватному ключу в поле «Private key file for authentication». Теперь возвращаемся на вкладку Session нажимаем сохранить, чтобы указанные настройки были записаны по-умолчанию.

После нажатия кнопки Open утилита Putty подключится к серверу, если были правильно указаны Host Name и Port (по умолчанию 22) и на черном экране отобразится приглашения для аутентификации такого вида:

Если на приватный ключ не был установлен пароль, авторизация будет осуществлена сразу после ввода логина и нажатия Enter, иначе появится следующее приглашение:

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

«MY-Rsa-Key» — это комментарий к публичному ключу. Если вместо этого появится приглашение на ввод обычного пароля пользователя, например: «test@192.168.1.1’s password:», значит проблема, скорее всего, где-то на стороне сервера, который некорректно настроен на авторизацию по ключу для выбранного пользователя. Для того, чтобы Putty произвел авторизацию по ключу необходимо только ввести путь к приватному ключу, как написано выше. Также следует убедиться, что в Connection->SSH->Auth стоит галочка напротив «Attempt authentication using Pageant», которая установлена по умолчанию.

Pageant — хранение приватных ключей в расшифрованном виде

Если ваш ключ используется на более чем одном устройстве или учетной записи, то чтобы не вводить пароль от ключа каждый раз, как вы подключаетесь к серверу, можно воспользоваться утилитой Pageant — Putty Authentication Agent — обеспечит надежную беспарольную аутентификацию. После запуска утилиты нажмите кнопку «Add Key», выберите приватный ключ защищенный паролем и введите от него пароль. Теперь подключение к учетным записям при помощи пароля через Putty не будет требовать ввода пароля от приватного ключа все время, пока этот ключ будет находится в расшифрованном виде в Pageant.

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

В Pageagent следует добавлять только приватные ключи, защищенные паролем. Можно добавить и приватный ключ без пароля, но это действие лишено всякого смысла, так как информацию о том, какой ключ использовать для какого подключения Putty берет из настройки в Connection->SSH->Auth->»Private key file for authentication».

SSH авторизация по ключам. PuTTy

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

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

Читайте также:  Opening dos from windows

Есть несколько варинатов. Подключение с 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

Оцените статью