SSH Аутентификация по Открытому Ключу

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

Аутентификация на основе ключей использует два ключа, один «открытый» (публичный ключ), который доступен каждому и второй «закрытый» (секретный ключ), который доступен только владельцу.

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

1. Генерируем пару ключей на локальном компьютере

Имейте в виду, что ключи должны генерироваться для каждого пользователя отдельно.

Создаем директорию, если она еще не существует и устанавливаем права:

$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh

Заходим в директорию и генерируем пару RSA ключей (открытый и закрытый):

$ cd ~/.ssh
$ ssh-keygen -t rsa

Вы можете добавить комментарий к открытому ключу:
$ ssh-keygen -t rsa -C «Комментарий… обычно здесь будет достаточно указать почтовый ящик…»

Копируем открытый ключ на удаленный сервер:

$ scp -p id_rsa.pub RemoteUser@RemoteHost

2. Подключаемся к удаленному серверу и устанавливаем открытый ключ

$ ssh RemoteUser@RemoteHost
Password: ********

Создаем директорию, если она еще не существует и устанавливаем права:

RemoteHost$ mkdir -p ~/.ssh
RemoteHost$ chmod 700 ~/.ssh

Копируем открытый ключ в файл ‘authorized_keys’ и устанавливаем права:

RemoteHost$ cat id_rsa.pub >> ~/.ssh/authorized_keys
RemoteHost$ chmod 600 ~/.ssh/authorized_keys

Удаляем открытый ключ из домашней директории и выходим:

RemoteHost$ rm -f ~/id_rsa.pub
RemoteHost$ logout

3. Добавляем закрытый ключ в агент аутентификации на локальном сервере

$ ssh-add
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)

Теперь мы можем подключаться к удаленному серверу по SSH без ввода пароля.