Командная строка 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