Como ssh para um host remoto usando a partir de uma função de script bash? [duplicado]

0

Eu sou novo no bash scripting. Eu quero chamar uma função do meu script que vai ssh em um computador remoto (na minha LAN) e executar um comando.

Até agora eu tenho:

function run_ssh_command {
    target_ip=$1
    username=$2
    password=$3
    cmd=$4

    ssh -l ${username} ${target_ip} ${password}
}

Eu invoco a função do terminal da seguinte forma:

( Nota : Eu atribuo valores "real" ao nome_do_script e à senha ao executar a função na minha máquina. 'ifconfig' é o comando que quero executar na máquina remota.)

source script_name.sh; run_ssh_command 192.168.X.Y username password ifconfig

Resultado : A execução do comando acima me levará à parte de solicitação de senha do processo de login (por exemplo, o mesmo que ssh [email protected])

Pergunta : Eu quero manipular a entrada de senha automaticamente usando o script. Qual é a melhor maneira de fazer isso, em geral?

    
por MarkMark 17.04.2018 / 12:49

2 respostas

0

Você pode usar sshpass . No entanto, isso exige que você codifique a senha, o que geralmente não é seguro e, portanto, não é recomendado, mas pode ser necessário caso não seja possível usar as impressões digitais da RSA.

Uso:

sshpass -p somepassword ssh user@host

Se você tiver acesso root ao computador remoto, deve pensar em estabelecer chaves RSA. Este explica como é a configuração. p>     

por 17.04.2018 / 14:01
0

Use isso para executar ssh a partir do script:

ssh -i {privateKey} -o StrictHostKeyChecking=no {userName}@{serverIp} "{command}"

Exemplo:

ssh -i privateKey -o StrictHostKeyChecking=no [email protected] "mkdir testFolder"

Este comando criará uma pasta de teste a partir do código de script.

    
por 17.04.2018 / 14:17