我想将本地更改同步到远程服务器的文件,然后重新加载使用该文件的服务。 例如:
# 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"
这样做会迫使我input两次SSH用户的密码。 有没有办法做得更好,这样我可能只需要input一次密码?
运行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 | |.oo . 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 [email protected]
复制整行并粘贴到远程主机上的/home/user/.ssh/authorized_keys 。
现在尝试:
ssh -i /path/abc.key [email protected]
是的,现在你已经login没有键盘authentication。 你可以在你使用ssh任何地方使用这个技巧。
您可以使用ControlMaster , ControlPath和ControlPersist ssh选项来使用ssh连接共享function。 使用这些使得ssh保持连接指定的秒数(或永远为0),并且任何后续的ssh会话将连接而不需要authentication,因为它们将使用已经build立的连接。
例:
把它放在.ssh / config中
Host * ControlMaster auto ControlPath /tmp/ssh_shared_%h_%p_%r ControlPersist 60
这将保持连接60秒。 德拉林这一次你不会被要求input密码。