Site icon 8HOST.COM

Создание SSH-ключей для подключения к VPS с помощью PuTTY

Преимущества открытых и закрытых SSH-ключей

Если автономный или удаленный VPS виден через Интернет, лучше использовать открытый ключ аутентификации вместо паролей, если это возможно. По сравнению с паролем, SSH-ключи предоставляют более защищенный вход в систему. В то время как пароль может, в конечном счёте, быть взломан во время атаки методом подбора ключа, расшифровать так SSH-ключи практически невозможно. При аутентификации с открытым ключом, каждый компьютер имеет (i) открытый и (ii) закрытый ключ (это два математически связанных алгоритма, которые, в сущности, невозможно взломать).

Сегодня OpenSSH является реализацией SSH по умолчанию на Unix-подобных системах, таких как Linux и OS X. Авторизация с помощью ключей – наиболее безопасный из нескольких способов входа, которые можно использовать с OpenSSH (к примеру, простые пароли и билеты Kerberos). Другие способы авторизации используются только в особенных ситуациях. SSH может использовать ключи RSA (Rivest-Shamir-Adleman) или DSA (Digital Signature Algorithm). Данные ключи считались передовыми алгоритмами, когда SSH был изобретен, но в последние годы DSA рассматривается как менее безопасный. RSA является единственным рекомендованным для новых ключей вариантом; поэтому данное руководство использует RSA-ключ и SSH-ключ взаимозаменяемо.

При входе на VPS SSH-сервер использует открытый ключ для «блокировки» сообщения таким образом, что оно может быть «разблокировано» только при помощи закрытого ключа. Это значит, что даже самый находчивый злоумышленник не сможет подглядывать или вмешиваться в сессию. В качестве дополнительной меры предосторожности некоторые пользователи и большинство SSH-программ хранят закрытый ключ в формате парольной фразы, что позволяет выиграть время на деактивацию подверженного риску открытого ключа, в случае если компьютер был украден или взломан. Потому авторизация с помощью открытого ключа является гораздо более безопасным решением для большинства пользователей, чем пароли. В сущности, не используя ключевую фразу для закрытого ключа, пользователь имеет возможность автоматизировать некоторые части управления конфигурацией, выполняя безопасный вход автоматически (например, делать инкрементные резервные копии вне сайтов, управлять активами через API, и многое другое).

Вход в систему при помощи SSH-ключей

Один и тот же открытый ключ можно сохранить на многих облачных серверах, в то время как закрытый ключ хранится на клиенте, с которого осуществляется вход на сервер.  Затем можно деактивировать обычную процедуру входа с помощью имени пользователя и пароля; следовательно, только пользователи, имеющие действительный открытый и закрытый ключ, смогут войти в систему. Это сделает систему невосприимчивой к атакам методом подбора ключа, а значит – существенно повысит ее защиту.

Генератор PuTTY-ключей (известный как PuTTYgen)

PuTTY – это клиентская программа для SSH (вдобавок к Telnet и Rlogin), она не является OpenSSH-портом или программой на основе OpenSSH. Следовательно, PuTTY не имеет встроенной поддержки чтения файлов с закрытыми SSH-2 ключами OpenSSH. Тем не менее, у PuTTY есть сопутствующая программа под названием PuTTYgen (утилита для генерирования RSA- и DSA-ключей), которая может преобразовывать файлы закрытых ключей OpenSSH  в формат PuTTY; это позволяет подключиться к облаку серверов через машину Windows, при этом обеспечивая  дополнительный уровень безопасности при помощи ключей SSH.

PuTTYgen является (свободной) утилитой с открытым исходным кодом и может быть загружена с сайта поддержки. PuTTYgen – утилита, необходимая для генерирования SSH-ключей для использования в PuTTY. Все, что нужно сделать для запуска данной утилиты, – это скачать исполняемые файлы (.exe) и сохранить их на компьютере, который используется для подключения к VPS (например, на рабочем столе). PuTTYgen не нуждается в установке как таковой, потому что является отдельным приложением.

Создание OpenSSH-совместимых ключей для использования с PuTTY

Чтобы создать набор RSA-ключей с помощью PuTTYgen:

  1. Запустите утилиту PuTTYgen, дважды кликнув по ее .exe файлу;
  2. В поле Type of key to generate выберите SSH-2 RSA;
  3. В поле Number of bits in a generated key укажите 2048 или 4096 (чем больше количество битов в ключе, тем сложнее взломать его при помощи подбора);
  4. Нажмите кнопку Generate;
  5. Двигайте курсором мыши в пустом поле Key под индикатором выполнения (чтобы внести некоторый элемент случайности) до тех пор, пока индикатор выполнения не будет заполнен;
  6. Теперь пара ключей (открытый и закрытый) сгенерирована;
  7. В поле Key comment введите любой комментарий, который поможет узнать эту пару ключей позже (к примеру, домашний или электронный адрес, и т.п.) – такие комментарии особенно полезны, в случае если используются несколько пар ключей;
  8. Дополнительно: введите фразу-пароль в поле Key passphrase, затем введите ее снова в поле Confirm passphrase (при необходимости использовать ключи для автоматизированных процессов не следует создавать ключевую фразу);
  9. Нажмите кнопку Save public key и выберите имя файла (многие создают папки с именем my_keys);
  10. Нажмите кнопку Save private key и выберите имя файла (можно сохранить его в ту же папку, что и открытый ключ, но эта локация не должна быть утеряна или доступна для посторонних пользователей; если ключи были утеряны, а стандартная процедура входа – деактивирована, пользователь больше не сможет войти в систему!)
  11. Кликните правой кнопкой в текстовом поле Public key for pasting into OpenSSH authorized_keys file и выберите Select All;
  12. Снова кликните правой кнопкой мыши в том же текстовом поле и выберите Copy.

Примечание: PuTTY и OpenSSH используют разные форматы открытых SSH-ключей.  Если скопированный SSH-ключ начинается с «—- BEGIN SSH2 PUBLIC KEY …», он в неправильном формате. Убедитесь, что все  инструкции были соблюдены. Ключ должен начинаться с «ssh-rsa AAAA ….».

Сохранение открытого ключа на сервер

Теперь нужно вставить скопированный открытый ключ в файл  ~/.ssh/authorized_keys на сервере.

  1. Войдите на сервер назначения;
  2. Если папки SSH не существует, создайте ее вручную:

mkdir ~/.ssh
chmod 0700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0644 ~/.ssh/authorized_keys

  1. Вставьте открытый SSH-ключ в файл ~/.ssh/authorized_keys:

sudo vim ~/.ssh/authorized_keys

  1. Нажмите клавишу i и кликните правой кнопкой мыши, чтобы вставить ключ.
  2. Чтобы сохранить изменения, нажмите следующие клавиши в указанном порядке:
    Esc, :, w, q, Enter

Создание профиля PuTTY для сохранения настроек сервера

PuTTY позволяет создавать (и сохранять) профили для соединения с различными SSH-серверами, что предотвращает необходимость запоминать и постоянно перепечатывать огромное количество информации.

  1. Запустите PuTTY, дважды кликнув по ее .exe файлу;
  2. Начальным окном PuTTY является категория Session (различные категории PuTTY можно переключать с левой стороны окна);
  3. В поле Host Name введите IP-адрес сервера или полностью определенное имя домена (FQDN);
  4. Введите номер порта в поле Port (для большей безопасности замените SSH-порт сервера нестандартным номером); см. Шаг 5 Начальной настройки сервера с Ubuntu 12.04;
  5. В поле Protocol выберите SSH;
  6. С левой стороны окна выберите подкатегорию Data, что находится под категорией Connection;
  7. Укажите имя пользователя, которое применяется при входе на SSH-сервер и профиль которого сохраняется, в поле Auto-login username;
  8. Перейдите к подкатегории SSH, что находится под категорией Connection;
  9. Выделите подкатегорию Auth и нажмите кнопку Browse, что находится с правой стороны окна PuTTY;
  10. Просмотрите файловую систему и выберите ранее созданный закрытый ключ;
  11. Вернитесь в категорию Session и введите имя профиля в поле Saved Sessions, например:

user@123.456.78.9 or user@host.yourdomain.tld;

  1. Нажмите кнопку Save в окне Load, Save or Delete a stored session.

Затем нужно войти в user@1.2.3.4  и пароль не будет запрошен. Хотя, если на открытый ключ был установлен фразовый пароль, появится запрос ввести его (нужно будет вводить его при каждом входе в дальнейшем).

Деактивация процедуры входа Username/Password

Убедившись, что на сервер можно войти при помощи ключей, многие пользователи предпочитают отключить стандартную процедуру входа для большей безопасности. Для этого нужно отредактировать конфигурационный файл SSH-сервера. На системах Debian/Ubuntu данный файл находится в /etc/ssh/sshd_config.

sudo vim /etc/ssh/sshd_config

Нажмите на клавиатуре клавишу i и отредактируйте строки, указанные ниже:

[...] PasswordAuthentication no
[...] UsePAM no
[...]

Чтобы сохранить изменения, нажмите в указанном порядке следующие клавиши: Esc, :, w, q, Enter. Теперь перезагрузите сервер SSH:

sudo reload ssh