Como rsync as mudanças e recarregar o serviço remoto, mas apenas digite a senha SSH uma vez

1

Gostaria de sincronizar as alterações locais em um arquivo para um servidor remoto e, em seguida, recarregar o serviço que usa esse arquivo. Por exemplo:

# 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"

Fazer isso dessa maneira me obriga a digitar a senha do usuário do SSH duas vezes. Existe alguma maneira de fazer isso melhor, para que eu tenha que digitar a senha apenas uma vez?

    
por NickRamirez 18.09.2016 / 18:24

2 respostas

0

Executar 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.          |
+-----------------+

Aqui omitimos a senha duas vezes pressionando Enter . Agora eu tenho abc.key e abc.key.pub arquivos. Vamos torná-los legíveis apenas por mim:

chmod 600 abc.key*

Abra o abc.key.pub :

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

Copie toda a linha e cole-a no /home/user/.ssh/authorized_keys no host remoto.

Agora tente:

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

Sim, agora você está logado sem autenticação de teclado. Você pode fazer esse truque em todos os lugares em que você usou ssh .

    
por 18.09.2016 / 20:30
2

Você pode usar as opções ControlMaster , ControlPath e ControlPersist ssh para usar o recurso de compartilhamento de conexão ssh. Usar estes faz com que o ssh mantenha a quantidade de segundos de conexão especificada (ou para sempre com 0) e qualquer sessão ssh consequente se conectará sem requerer autenticação porque eles usarão a conexão já estabelecida.

Exemplo:

coloque isso em .ssh / config

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

isso manterá a conexão por 60 segundos. Durante este tempo, você não será solicitado a digitar a senha.

    
por 18.09.2016 / 19:24