Здесь мы рассмотрим как сгенерировать, подготовить и настроить ключ для работы соединения по SSH.
В качестве генератора ключа будем использовать утилиту puttygen, которая поставляется в составе ssh-клиента putty.
До генерации ключа (кнопка Generate) вам нужно выбрать его тип. Фактически, это единственный параметр. Скорее всего, ваш сервер настроен на поддержку разных типов ключей и наиболее вероятно, что он поддерживает SSH-2 RSA ключи.
Далее нужно сохранить полученные ключи — save public key и save private key. Для Private Key также следует задать пароль (это не обязательно, но дополнительная мера безопасности не повредит).
Размещение публичного ключа
Публичный ключ нужно разместить на сервере в следующем месте: /home/USERNAME/.ssh/authorized_keys, т.е. имя конечного файла должно быть — authorized_keys, без каких либо расширений.
Утилита puttygen формирует публичный ключ в формате вроде:
1 2 3 4 5 6 7 |
---- BEGIN SSH2 PUBLIC KEY ---- Comment: "rsa-key-20121022" AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u vObrJe8= ---- END SSH2 PUBLIC KEY ---- |
Но данный формат требуется преобразовать вот так:
1 |
ssh-rsa AAAAB3...uvObrJe8= rsa-key-20121022 |
Т.е. в начале идет сигнатура ‘ssh-rsa’, далее через пробел идет сам ключ, без переносов на новую строку. В конце, через пробел, можно добавить на самом деле произвольный комментарий, т.к. эта часть не имеет функциональной нагрузки. Всё это должно быть выполнено в одну строку.
Далее следует проверить верно ли установлены владелец и права на файл ключа authorized_keys и каталог /home/USERNAME/.ssh .
Оба должны принадлежать пользователю USERNAME, для которого сформирован этот ключ. Минимальные права на папку нужны 500, на файл — 400.
Если права выставлены не верно, то сервер будет сообщать что то вроде — ‘server refuses our key‘ и ошибку ‘No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)‘.
Настройка клиента
В клиентской программе укажите место расположения приватного ключа.
Connection -> SSH -> Auth:
Удобно также задать имя пользователя (USERNAME), чтобы не вводить его каждый раз вручную:
Connection -> Data:
Не связанные с SSH настройки клиента мы рассматривать не будем, обычно настройки по умолчанию подходят для работы. С ними вы, без сомнения, разберетесь.
Прочие проблемы
Иногда доступ к серверу ограничен белым списком ip адресов, и потому требуется заходить на него либо с определенного устройства (с нужным ip) либо через VPN, который обеспечивает данный ip адрес (к примеру корпоративный VPN).
Как вы понимаете, к самому SSH ключу эта проблема не относится. Нужно лишь верно диагностировать на каком этапе вы не можете подключиться.
Важна бывает и длина ключа, обычно сервером поддерживается длина до 2048 бит, но утилиты вроде ssh-generate могут по умолчанию иметь другие настройки (вроде 3072 бит). Потому для ssh-generate (если вы используете её вместо puttygen) нужно явно указать длину ключа:
1 |
ssh-generate -t rsa -b 2048 |