Script para conectar com o ssh ao servidor remoto com senha

1

Estou conectando de uma máquina remota a várias máquinas remotas em uma rede. Nome de usuário e senha para todas as máquinas remotas é o mesmo. Eu quero escrever um script que irá usar o meu nome de usuário e passar para o login na máquina. Não consigo instalar nenhuma ferramenta na máquina host (espera ou sshpass). Copiar chave pública para o destino da máquina remota não faz sentido, já que raramente conecto mais de uma vez à mesma máquina. Todos os dias - novas máquinas.

É possível configurar o ssh na máquina host para poder conectar-se a máquinas remotas sem precisar definir algo nas máquinas de destino?

Máquina local que estou usando para se conectar ao resto da rede - SUSE Linux Enterprise Server 11 SP3

    
por Vitalii Plagov 03.01.2017 / 14:32

1 resposta

0

Dados os requisitos, eu instalaria expect em minha máquina local e usaria para adicionar um novo comando. Vamos chamar os hosts remotos one e many1 , many2 e a máquina local mybox . Algo parecido com isto (não testado)

#!/usr/bin/expect
# connect to "one"
spawn ssh username@one
# next lines shouldn't be needed, should have shared keys for "one"
expect "assword: "
# provide password for "one", ending with "\r"
send -- "the_password_for_username@one\r"
# mainloop
interact "~p" {
    send "ssh manyuser@[lindex $argv 0]\r"
    expect "yes/no)? " { send "yes\r" exp_continue } "assword: "
    send "the_password_for_many\r"
    }

Execute isso em mybox as ./script many1 , ele conectará você a one

Então, quando você quiser se conectar a many1 , basta digitar ~p . Ele irá executar o comando ssh, responder a pergunta "você deseja conectar" se solicitado e fornecer a senha.

É claro que os comentários padrão sobre a insegurança de armazenar senhas em scripts se aplicam. A outra desvantagem é que você precisa dedicar uma seqüência de chaves para isso. Aqui estou usando ~p , mas você pode usar uma tecla de função.

    
por 03.01.2017 / 16:51