Если вам надоело вводить логин и пароль при подключении по SSH, либо ваше приложение не поддерживает ввод логина и пароля для SSH, а соединиться всётаки надо, то вам просто необходимо использовать авторизацию по ключам!

Для этого надо настроить на стороне клиента и сервера ключи, для клиента будет приватный, а на сервере будет храниться публичный ключ.

Настройка на стороне клиента

Создайте и/или отредактируйте файл «~/.ssh/config»:

Host example
    User username
    Hostname example.com
    Port 22
    IdentityFile ~/.ssh/username_example

Где,

  • «Host example» — название хоста, которое вы будете указывать при подключении по SSH (Пример: «ssh example»);
  • «User username» — имя вашего пользователя на сервере;
  • «Hostname example.com» — имя хоста вашего сервера (в отличии от Host это действительно имя сервера, а не просто имя для соединения);
  • «Port 22» — SSH порт;
  • «IdentityFile ~/.ssh/username_example» — файл с публичным ключом.

Генерация ключей и передача их на сервер

Далее, сгенерируем ключи.
После чего сразу же перешлём публичный ключ на сервер, а приватный переименуем в «~/.ssh/username_example»:

ssh-keygen
scp ~/.ssh/id_rsa.pub username@example.com:~/.ssh/authorized_keys
mv ~/.ssh/id_rsa ~/.ssh/username_example
chmod -R 600 ~/.ssh
chmod 700 ~/.ssh

Теперь должно подключаться по ключу:

ssh example

Если нет, то пишите камменты :)

Утилита ssh-copy-id

Также есть более быстрый (меньше телодвижений) и правильный (он добавляет ключ в «~/.ssh/authorized_keys» на сервере, а не замещает как «scp») способ передавать публичный ключ на сервер, это утилита ssh-copy-id.

То есть вместо:

ssh-keygen
scp ~/.ssh/id_rsa.pub username@example.com:~/.ssh/authorized_keys

надо использовать так:

ssh-keygen
ssh-copy-id -i username@example.com

Ну вот и всё, смотрите также:
WordPress. Обновление движка и плагинов через ssh
Первые меры безопасности во FreeBSD
FreeBSD. Без парольный доступ по SSH с использованием шифрованных ключей
FreeBSD. DenyHosts защитит вас от брутфорса SSH


Комментарии (8) на запись «SSH. Авторизация через ключ»

» Трекбеки скрыты, показать их?
  1. Sinkler | 03.08.2011 в 00:04

    под винду для генерации можно юзать puttykey

  2. Sinkler | 03.08.2011 в 00:04

    ссори, puttygen

  3. Евгений | 08.09.2011 в 19:16

    Если лень вводить пароль каждый раз, открой ssh сессию в byobu и не закрывай ее =)

  4. Pandora | 09.09.2011 в 03:52

    А меня вот интересует как мой биометрический APC привязать к SSH по отпечатку руки

  5. Pandora | 09.09.2011 в 04:11

    AES3500

  6. mathete | 17.09.2011 в 11:36

    Миш, а ты fabric юзать пробовал?

    Я на эту твою статью набрел как раз в поисках ускорения работы с fabric. Могу подкинуть примеры нескольких рабочих fabfile. Думаю может пригодиться в знакомом нам с тобой проекте :) Да и вообще.

    Я лично перевел деплой своих проектов на fabric. Доволен как слон. Одной командой делаю коммит, деплой и рестарт удаленных сервисов.

  7. adw0rd | 19.09.2011 в 18:05

    Сейчас на самизнаетекаком проекте мы юзаем fabric, причем уже полгода как минимум :)

  8. Dj Tiesto | 12.10.2011 в 13:45

    Полезная весч!!

Оставить комментарий