如何 rsync 更改并重新加载远程服务但仅输入一次 SSH 密码

如何 rsync 更改并重新加载远程服务但仅输入一次 SSH 密码

我想将本地对文件的更改同步到远程服务器,然后重新加载使用该文件的服务。例如:

# Sync file to remote server
rsync -avzhe ssh --rsync-path "sudo rsync" \
    /etc/haproxy/haproxy.cfg [email protected]:/etc/haproxy/

# Reload remote service
ssh [email protected] "sudo /etc/init.d/haproxy reload"

这样做会强制我输入 SSH 用户的密码两次。有没有更好的方法,这样我可能只需要输入一次密码?

答案1

跑步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 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|..               |
|+                |
| + .             |
|+ E o            |
|.o o .  S        |
| .+   .. .       |
| ..  .. o        |
|. .o ...         |
|..OX+o.          |
+-----------------+

这里我按 两次省略了密码Enter。现在我有abc.keyabc.key.pub文件。让我们将它们设置为只有我可读:

chmod 600 abc.key*

打开abc.key.pub

ssh > cat abc.key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDppADcp53HZ4KF7EsNcfV1qM4WtuYEeHWjAXsFqJwHd7loyKYnORHtAMtd78+cSHTiAycLeNqX9xRh/lPlhifeovxJ8th6c4W7cXNWalmz6q+RkDE8ZznmcNSvrMToLm7oivdsBDiPIBbiOtunKRQ2TsNZ72RJuC3RlrmUakWp9RcrQMFAvyxkzJYmm4fTSozosA2/NaHn0qIm/5Ed9I5BQ9IzRQLgzsXCtBTQY83aBcYLk+AzhQiM45AV1mOGzYAkgXu6Uo3P9jDxi2DE1priW8SnKEXhrTEmNDAZDkDRAz1Go/lGnENslqLZ0URs5spGtHGhcWt9DmSjVGbbGvpP [email protected]

复制整行并将其粘贴到/home/user/.ssh/authorized_keys远程主机上。

现在尝试:

ssh -i /path/abc.key [email protected]

是的,现在您无需键盘验证即可登录。您可以在任何使用过的地方使用该技巧ssh

答案2

您可以使用控制大师控制路径控制持续ssh 选项可利用 ssh 连接共享功能。使用这些选项可使 ssh 保持连接指定的秒数(或永远保持为 0),并且任何后续 ssh 会话都将连接而无需身份验证,因为它们将使用已建立的连接。

例子:

将其放入 .ssh/config

Host *
    ControlMaster auto
    ControlPath /tmp/ssh_shared_%h_%p_%r
    ControlPersist 60

这将保持连接 60 秒。在此期间,系统不会要求您输入密码。

相关内容