Execute ssh com autenticação de senha via prompt de comando do Windows

93

Preciso executar o ssh na linha de comando do Windows , fornecendo a senha de maneira não interativa. Eu poderia implementar a autenticação baseada em chave e ser capaz de executar os comandos ssh assim como

ssh <user>@<host> <command>

Existe algum comando como

ssh <user>@<host> -P <password> <command>

insira a descrição da imagem aqui

Não sei se é viável. No entanto, pode haver alguma solução alternativa para o mesmo. Jogue-me algumas idéias para fazer o mesmo.

Balachandar
fonte
2
Usar a autenticação baseada em chave é uma ideia muito melhor.
Greg Inozemtsev
1
Sim, eu também tenho um requisito para autenticação baseada em senha.
Balachandar
12
@GregInozemtsev embora seja esse o caso, às vezes surge a necessidade de um script rápido e sujo para fazer algo assim, especialmente em um teste ou outro ambiente onde a segurança pura não é necessária.
TheJosh de
Não entendo por que está faltando essa opção básica. Eu estava procurando pelo comando -pw superputty (putty) :( Acho que vou passar para as chaves ssh.
m3nda

Respostas:

160

O utilitário sshpass serve exatamente para isso. Primeiro, instale o sshpass digitando este comando:

sudo apt-get install sshpass

Em seguida, acrescente seu comando ssh / scp com

sshpass -p '<password>' <ssh/scp command>

Este programa é mais fácil de instalar ao usar o Linux.

O usuário deve considerar o uso de autenticação de chave pública mais segura do SSH (com o sshcomando).

Anish Bhatt
fonte
8
Funciona para rsync também.
TheJosh de
15
Porque o título não inclui "janelas" e aparece no topo da lista ao pesquisar por Linux / Unix / Mac. Portanto, responder a essa pergunta aqui economiza tempo.
Frobbit
1
Funcionou muito bem no Mac OS X. Instalei o sshpass via sudo port install sshpass. Porém, se houver um problema de login devido a outra coisa, o sshpass tendia a falhar silenciosamente (sem mensagem de erro). Portanto, depure o comando sem sshpassprimeiro; em seguida, adicione sshpass -p blah(etc.).
RedRedSuit
5
Você deve estar ciente de que os comandos shell executados são armazenados (por exemplo, em '.bash_history') ..
Benjamin
4
Anish - O autor pediu para windows, você deu opção para linux.
arka.b
24

E quanto a esse script de espera?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
Illarion Kovalchuk
fonte
Diz que não tenho o script esperado
Sameer Sawla
expecté notoriamente subestimado!
Frerich Raabe
4

Solução Windows

  1. Instale PuTTY
  2. pressione Windows-Key + R
  3. Entrar putty.exe -ssh [username]@[hostname] -pw [password]
otimistas
fonte
2

Solução PowerShell

Usando Posh-SSH:

New-SSHSession -ComputerName 0.0.0.0 -Credential $cred | Out-Null
Invoke-SSHCommand -SessionId 1 -Command "nohup sleep 5 >> abs.log &" | Out-Null
Owain Esau
fonte