Я хотел бы синхронизировать локальные изменения в файле с удаленным сервером, а затем перезагрузить службу, которая использует этот файл. Например:
# Sync file to remote server
rsync -avzhe ssh --rsync-path "sudo rsync" \
/etc/haproxy/haproxy.cfg vagrant@192.168.50.31:/etc/haproxy/
# Reload remote service
ssh vagrant@192.168.50.31 "sudo /etc/init.d/haproxy reload"
Это заставляет меня дважды вводить пароль пользователя SSH. Есть ли способ сделать это лучше, чтобы мне приходилось вводить пароль только один раз?
Ты можешь использовать ControlMaster, ControlPath и ControlPersist ssh, чтобы использовать функцию совместного использования ssh-соединения. Их использование заставляет ssh сохранять указанное количество секунд соединения (или навсегда с 0), и любые последующие сеансы ssh будут подключаться без аутентификации, потому что они будут использовать уже установленное соединение.
Пример:
поместите это в .ssh / config
Host *
ControlMaster auto
ControlPath /tmp/ssh_shared_%h_%p_%r
ControlPersist 60
это сохранит соединение в течение 60 секунд. В этот раз пароль запрашиваться не будет.
Бегать ssh-keygen
:
ssh > ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): abc.key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in abc.key.
Your public key has been saved in abc.key.pub.
The key fingerprint is:
9e:e2:46:c0:9a:ac:fe:fb:ea:ec:ee:66:00:39:91:f8 root@domain.tld
The key's randomart image is:
+--[ RSA 2048]----+
|.. |
|+ |
| + . |
|+ E o |
|.o o . S |
| .+ .. . |
| .. .. o |
|. .o ... |
|..OX+o. |
+-----------------+
Здесь я дважды пропустил кодовую фразу, нажав Enter
. Теперь у меня есть abc.key
и abc.key.pub
файлы. Сделаем их доступными для чтения только мне:
chmod 600 abc.key*
Открой abc.key.pub
:
ssh > cat abc.key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDppADcp53HZ4KF7EsNcfV1qM4WtuYEeHWjAXsFqJwHd7loyKYnORHtAMtd78+cSHTiAycLeNqX9xRh/lPlhifeovxJ8th6c4W7cXNWalmz6q+RkDE8ZznmcNSvrMToLm7oivdsBDiPIBbiOtunKRQ2TsNZ72RJuC3RlrmUakWp9RcrQMFAvyxkzJYmm4fTSozosA2/NaHn0qIm/5Ed9I5BQ9IzRQLgzsXCtBTQY83aBcYLk+AzhQiM45AV1mOGzYAkgXu6Uo3P9jDxi2DE1priW8SnKEXhrTEmNDAZDkDRAz1Go/lGnENslqLZ0URs5spGtHGhcWt9DmSjVGbbGvpP user@domain.tld
Скопируйте всю строку и вставьте ее в /home/user/.ssh/authorized_keys
на удаленном хосте.
А теперь попробуйте:
ssh -i /path/abc.key user@remote.host
Да, теперь вы вошли в систему без аутентификации с клавиатуры. Вы можете проделать этот трюк везде, где использовали ssh
.