Если вы занимаетесь веб-разработкой или администрированием, то, скорее всего, вам потребуется подключаться к серверу по ssh. А если это приходится делать часто, то порой надоедает постоянно вводить пароль для входа. В таком случае вам поможет авторизация по приватному ключу. Сервер будет сам понимать, что на вашем компьютере есть ключ доступа и что вы хотите войти в систему.
Создание и использование ключа
Генерируем ключ следующей командой на машине, с которой хотим подключаться к серверу.
$ ssh-keygen
И отвечаем на несколько вопросов.
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/taly/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/taly/.ssh/id_rsa.
Your public key has been saved in /Users/taly/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:mi1o/XMVfO+2ZISdfgk9fdg8j9giKObZusp1Gwk taly@MacBook
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| . . |
| = o |
| E . .B . + o |
| . ooo+. . o . .|
|.o o+TTo.o o + |
|*o. =o. o o o|
|OB+= o.o o.|
+----[SHA256]-----+
Теперь открываем файл с публичным ключом. По-умолчанию этот файл находится ~/.ssh/id_rsa.pub
$ more ~/.ssh/id_rsa.pub
И копируем всё содержимое, которое выглядит подобным образом. Там всего одна строка
ssh-rsa AAAAB3...HjK8h taly@MacBook
Подключаемся к серверу, к которому будем подключаться без пароля, и открываем в редакторе файл c ключами.
$ ssh root@myserver
root@myserver's password:
### Welcome to server! ###
root@myserver$ nano ~/.ssh/authorized_keys
Добавляем новую строку с публичным ключом, который сгенерировали ранее.
Сохраняем файл и выходим из редактора. Ctrl+X, Y, Enter — для nano.
Покидаем сервер, чтобы проверить работу ключа.
root@myserver$ exit
Теперь вы можете авторизоваться на сервере со своего компьютера без необходимости вводить пароль.
$ ssh [email protected]
Если подключение к серверу должно осуществляется не по стандартному порту 22, а по какому-то другому, например, 1000, то укажите его после ключа -p
$ ssh [email protected] -p 1000
Файл конфигурации
Также вы можете на своем компьютере создать файл с настройками подключений.
$ nano ~/.ssh/config
И по подобию добавьте параметры для подключений.
Host customNameForHost
HostName mysite.ru
Port 22
User root
IdentityFile ~/.ssh/id_rsa
Host myAnotherServer
HostName mysite2.ru
Port 22
User root
IdentityFile ~/.ssh/id_rsa
Теперь можно подключиться к серверу, используя только название хоста, которое вы указали в конфигурационном файле.
$ ssh customNameForHost
$ ssh myAnotherServer