bash script falhando em usar ssh -i. Não pode ver o diretório

2

Estou experimentando algo estranho. Eu estou trabalhando em um script para instalar remotamente o Splunk em servidores através de um script. Neste script eu ssh para meus servidores de prática (5 instâncias amazon EC2 rodando Redhat).

No entanto, quando executo o script, recebo este erro:

Warning: Identity file ~/Keypairs/jadam-macbookpro-ec2-1.pem not accessible: No such file or directory.

Meu primeiro passo foi obviamente ter certeza de que o caminho estava lá. Eu copio o comando executado e colo no meu terminal. Eu me conectei com sucesso à minha instância usando o par de chaves.

Aqui está o comando em questão. Eu tentei tanto com e sem sudo prefixando o comando:

KEYPAIR="~/Keypairs/jadam-macbookpro-ec2-1.pem"
sudo ssh -i "$KEYPAIR" "$DST" "$REMOTE_SCRIPT"

REMOTE_SCRIPT é o arquivo de script a ser executado e DST é o endereço dos meus servidores retirado de um arquivo de hosts.

O comando resolvido é:

ssh -i ~/Keypairs/jadam-macbookpro-ec2-1.pem [email protected]

O script falha, mas copiar o comando e fazê-lo manualmente funciona. Eu pensei que era um problema de permissões em primeiro lugar, é por isso que eu corri com o sudo, mas acha que o diretório não existe.

Alguma idéia?

    
por Joshua 11.06.2015 / 17:34

1 resposta

10

Na verdade, o seu comando resolvido não está certo. É realmente isso:

ssh -i "~/Keypairs/jadam-macbookpro-ec2-1.pem" "[email protected]"

As aspas duplas param o shell que está expandindo ~ e são tratadas como um literal. Substitua-o pela variável de ambiente $HOME e o problema será resolvido:

KEYPAIR="$HOME/Keypairs/jadam-macbookpro-ec2-1.pem"
sudo ssh -i "$KEYPAIR" "$DST" "$REMOTE_SCRIPT"

Devo salientar que ssh avaliará o ~ como diretório home , mas neste caso ele estará fazendo isso no contexto do root e não no seu, então não estará procurando o arquivo no diretório $HOME/.ssh .

    
por 11.06.2015 / 17:45