Como usar o esperado no script Bash e no ssh-copy-id

0

De um script bash:

source ./expect.sh

Estou incluindo um código de expectativa:

#!/bin/bash
/usr/bin/expect <<EOL
spawn ssh-copy-id -i /home/user/.ssh/id_rsa.pub 111.111.111
expect '*?assword*'
send 'thepassword'
interact
EOL

E estou recebendo isso:

spawn ssh-copy-id -i /home/user/.ssh/id_rsa.pub 111.111.111.111
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Então, tento conectar e sou solicitado a fornecer uma senha ...

Verificando o servidor, tenho certeza de que nenhuma chave foi carregada porque esperaria listar o arquivo "authorized_keys":

root@server: ls /home/user/.ssh/
known_hosts

O que estou fazendo de errado?

    
por Roger 08.10.2015 / 02:27

3 respostas

1

Além do comentário sobre "root":

  1. aspas simples são apenas caracteres simples em espera. use aspas duplas
  2. não se esqueça de "apertar enter" quando você enviar a senha
expect "*?assword*"
send "thepassword\r"

Geralmente, é uma boa prática citar a palavra final heredoc, a menos que você precise interpolar variáveis ou substituir comandos no corpo da heredoc:

some command <<'END'
# .............^...^
...
END
    
por 08.10.2015 / 15:24
0

Você executa spawn ssh-copy-id -i /home/user/.ssh/id_rsa.pub 111.111.111 . O endereço IP parece estar errado.

    
por 08.10.2015 / 05:00
0

Você pode ver no prompt de senha: [email protected] que você é Configurando a chave do root no remoto, ou seja, o arquivo /root/.ssh/authorized_keys . Execute o script como user , não raiz, ou forneça um ssh-copy-id ... [email protected] explícito. Isso permite que user faça o login sem uma senha, não com root.

    
por 08.10.2015 / 08:56

Tags