Доступ по ssh ключу

При подключении по ssh или sftp можно авторизовываться по паролю или по ssh ключу. Авторизация по ssh ключу удобна и не требует ввода пароля каждый раз при подключении.

Для доступа по ssh ключу необходимо:

  1. Создать ssh ключ
  2. Добавить его в конфигурационный файл на сервере

Создание ssh ключа при помощи OpenSSH (linux, mac)

# Проверяем, что ключ еще не создан и создаем новый
test -e ~/.ssh/id_rsa || ssh-keygen -b 2048 -t rsa -q -P '' -f ~/.ssh/id_rsa

# печатаем публичную часть ключа
cat ~/.ssh/id_rsa.pub

Публичная часть ключа выглядит примерно так:

ssh-rsa AAAAB3NzaC1yc2EA...aW8HdRJP3 user@server

Добавление ssh ключа владельцем ключа, если есть логин и пароль (linux, mac)

ssh-copy-id a1234@server.dobrohost.ru

Здесь a1234 - логин (посмотрите свой логин в контрольной панели или в комментарии к услуге), а server.dobrohost.ru - сервер вашего аккаунта (можно использовать технический домен, или посмотреть текущий сервер в контрольной панели).

Команда ssh-copy-id спросит пароль (это пароль от контрольной панели, он совпадает с паролем от ssh/ftp), после этого вы сможете авторизовываться по ssh без пароля.

Добавление ssh ключа владельцем аккаунта без предоставления доступа по паролю

Этот сценарий может быть полезен, если вы хотите предоставить своим разработчикам доступ к файлам сайта по ssh/sftp, но не хотите предоставлять им доступ к изменению настроек хостинга или к контрольной панели.

Сначала необходимо получить у владельца ключа публичную часть ключа. Он может прислать файл id_rsa.pub или его текстовое содержимое (cat ~/.ssh/id_rsa.pub).

Это содержимое необходимо добавить в конец файла ~/.ssh/authorized_keys вашего аккаунта. Возможно, этот файл потребуется создать, в шелле это можно сделать командами

mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Так же этот файл можно создать вручную в любом sftp клиенте (мы рекомендуем WinSCP): в корне аккаунта нужно создать каталог .ssh с правами 700 (rwx------), а в нём файл authorized_keys с правами 600 (rw-------).

Обратите внимание, имя каталога .ssh начинается с точки, по умолчанию большинство ftp клиентов не показывает файлы и каталоги, начинающиеся с точки.

Добавить ssh ключ в конец файла можно, например, так:

echo публичный-ключ-в-одну-строку user@server >> ~/.ssh/authorized_keys

echo ssh-rsa AAAAB3NzaC1yc2EA...aW8HdRJP3 user@server >> ~/.ssh/authorized_keys

Здесь ssh-rsa AAAAB3NzaC1yc2EA...aW8HdRJP3 user@server - ключ, который вам прислали (реальная строка будет длиннее).

Тэги: ssh, help