Командная строка Linux - отличное решение для автоматизации задач. Кроме автоматизации локальных задач, вы можете автоматизировать и удаленные задачи, используя SSH. При этом ввод пароля удаленной машины будет помехой.

Сегодня мы расскажем, как настроить подключение к удаленной машине по SSH без пароля. Определим, что подключаться будем с компьютера A под пользователем usera к удаленному компьютеру B под пользователем userb.

Сначала нужно подключиться к компьютеру A под пользователем usera и сформировать пару ключей аутентификации.

usera@machine-a:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usera/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usera/.ssh/id_rsa.
Your public key has been saved in /home/usera/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:J+R7BEW/KY7jxPkZ+vYLbiKFYVjEGb//Lm39esaZBaE usera@machine-a
The key's randomart image is:
+---[RSA 2048]----+
|     ooo .o      |
|      +. . .  .  |
|     o  +   .. . |
|    . oo o  Eo.  |
|     . oS + o  . |
|      ...X .    .|
|       .B *. . .+|
|       .o.+=o .o+|
|       .o====..=.|
+----[SHA256]-----+

Теперь удаленно создадим папку ~/.ssh как пользователь userb на машине B. (Если такая папка уже есть - не беда):

usera@machine-a:~$ ssh userb@machine-b mkdir -p .ssh
userb@machine-b's password:

Теперь нужно добавить созданный публичный ключ в файл .ssh/authorized_keys на удаленной машине и ввести пароль пользователя userb в последний раз:

usera@machine-a:~$ cat .ssh/id_rsa.pub | ssh userb@machine-b 'cat >> .ssh/authorized_keys'
userb@machine-b's password:

Теперь вы можете подключаться к машине B с машины A без пароля:

usera@machine-a:~$ ssh userb@machine-b

В зависимости от используемой версии SSH, может потребоваться внесение следующих изменений:

  • Поместите публичный ключ в файл .ssh/authorized_keys2
  • Измените права на папку .ssh на 700
  • Измените права на файл .ssh/authorized_keys2 на 640

Читайте также: 3 способа оставить команду работать после выхода из сеанса SSH