Вход по SSH без пароля
SSH — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов).
SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол.
Очень часто для управления нужно заходить на определённый компьютер (server) и при этом он запрашывает пароль. Но если нам нужно заходить все время, то надоедат все вводить одно и тоже. А если у нас много серверов и на каждом свой пароль?
Протокол ssh разрешает входить на уделённую машыну без ввода пароля (это очень полезно, например, при резервном копировании, публикации файлов и т.п.).
Но не нужно думать, что просто убирается пароль, для этого служит идентификация на основе публичного ключа пользователя (ключ, который будет идентификатором нашего пользователя на удаленном компьютере).
1. Сначала на пользовательском компьютере (client) для конкретного пользователя (user) создается пара ключей public и private.
Это делается с вомощью утилиты ssh-keygen
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): # Путь где будет сохранен наш ключ <Enter> Created directory '/home/user/.ssh'. Enter passphrase (empty for no passphrase): # Пароль для защиты ключа, если пусто - без пароля Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 63:4b:1c:ea:30:f3:d5:c8:3c:77:73:ea:bb:9c:6f:64 user@client The key's randomart image is: +--[ RSA 2048]----+ | . | | = + | | + . S o o | | * + = . +E | | o . .o | | o | | *=. | +-----------------+
Для генерации ключа мы использовали криптографический алгоритм RSA
В домашней директории в поддиректории .ssh появятся два ключа: id_rsa и id_rsa.pub
2. Дальше нам нужно скопировать наш открытый ключ (id_rsa.pub) на сервер, для этого мы делаем следующую команду
$ ssh-copy-id username@my-server.com
Или же просто скопировать наш файл с публичным ключём на тот же сервер следующим образом
$ scp ~/.ssh/id_rsa.pub username@my-server.com:/home/username/.ssh/authorized_keys_user
После чего мы спокойно можем заходить на удалённый компьютер без ввода пароля.
$ ssh username@my-server.com
Но бывает и несколько нестандартная ситуация, когда на сервере изменен порт для входа. Тогда нужно использовать ключ -р XXXX,
где ХХХХ - порт входа на сервер.