Задача: требуется аутентифицировать машину Клиента (user: client_username, host: client_host) на машине Сервера (remote user: server_username, host: server_host).
- Заходим в консоль Клиента (в Windows - подключаемся через Putty на нужную Linux-машину, либо запускаем Git Bash для настройки аутентификации в git).
- В консоли Клиента выполняем команду для генерации ключевой пары Клиента {открытый ключ, закрытый ключ}:
ssh-keygen -t rsa - По умолчанию, в локальном домашнем каталоге Клиента, есть каталог .ssh (каталог /root/.ssh/ - если Клиент работает под root-ом, либо /home/client_name/.ssh/ - если Клиент работает с правами обычного пользователя, в Windows7 - домашний каталог пользователя Users\client_name\.ssh). В нём должны появится файлы: id_rsa.pub (открытый ключ), id_rsa (закрытый ключ).
- С машины Клиента подключаемся по ssh на удаленную машину Сервера, где есть зарегистрированный удаленный юзер server_username на Сервере и при первом подключении к Серверу будет выведен запрос на добавление сертификата Сервера в хранилище Клиента, с которым соглашаемся, вводя 'yes':
ssh server_username
@server_host
- Копируем открытый ключ Клиента (id_rsa.pub) в удалённый домашний каталог Клиента на Сервере (каталог /root/.ssh/ - если Клиент подключился как root, либо /home/client_name/.ssh/ - если Клиент подключился как обычный пользователь). Для упрощения копирования можно использовать плагин Total Commander - Secure FTP Connections или программу winscp. При необходимости id_rsa.pub можно переименовать, например, если нужно аутентифицировать на Сервере несколько разных машин.
- Создаем, при необходимости, в удаленном домашнем каталоге Клиента каталог .ssh:
mkdir ~/.ssh - Задаем, при необходимости, права на каталог .ssh:
chmod
700
.ssh
- Находясь в каталоге .ssh выполняем команду для помещения открытого ключа Клиента в хранилище Сервера authorized_keys, который будет в том же каталоге .ssh:cat id_rsa.pub >> ~/.ssh/authorized_keys
- Задаем, при необходимости, права на файл .ssh/authorized_keys:
chmod
600
~/.ssh/authorized_keys
Если все операции выполнены успешно, то в будущем аутентификация Клиента на Сервере будет происходить без запроса пароля, по сертификату. То есть, например, не будут выходить запросы на аутентификацию при копировании с помощью команды scp с Клиента на Сервер.
Например, данная инструкция может пригодиться для настройки агента TeamCity, чтобы он мог автоматически копировать файлы на указанный тестовый сервер. Или для аутентификации локальной машины в хранилище git-а. Или для упрощения копирования с одной машины на другую при помощи команды scp.