ssh sem senha de um script bash

1

Estou escrevendo um script bash que deve iniciar um agente de serf ( link ) em uma máquina remota via ssh . Eu configurei as chaves rsa usando ...

ssh-key-gen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote-host>

E eu posso ssh na máquina remota sem uma senha do terminal. Esta é a chamada que estou fazendo no script

ssh <user>@<hostname> "serf agent -node database -event-handler user:database_install=~/serf_install_db_handler.sh"

Mas quando o script está em execução, eu tenho que usar este comando para executá-lo sem o prompt de senha ...

ssh -i ~/.ssh/id_rsa.pub <remote-host> <command>

Por que eu tenho que fazer isso no script quando não preciso fazer isso no terminal?

    
por restin84 21.03.2014 / 03:37

2 respostas

2

ssh -i seleciona um arquivo a partir do qual a autenticação de identidade (chave privada) ou chave pública é lida.

Você poderia configurar o ssh para usá-lo em sua configuração para este host, para que você não precise especificá-lo.

Adicione a ~/.ssh/config (substitua server.example.com pelo nome do host ou IP do seu servidor):

Host server.example.com
    User username
    Hostname server.example.com
    PreferredAuthentications publickey,password
    IdentityFile ~/.ssh/id_rsa.pub

Essa configuração fará com que sua conexão sempre tente usar a chave id_rsa.pub e, em seguida, use a senha se a chave não estiver disponível por algum motivo.

Então, agora você deve poder usar ssh <user>@<host> <command> automaticamente usando sua chave privada para autenticação.

    
por 21.03.2014 / 09:21
0

Já experimentou o ssh-add no início do sistema?

ssh-add — adds private key identities to the authentication agent

você pode usar este comando e por padrão na conexão o ssh tentará usar suas chaves privadas e somente depois disso - senha.

    
por 21.03.2014 / 13:58

Tags