Login SSH com senha de texto simples como parâmetro? [duplicado]

80

Eu preciso entrar para um usuário que eu criei em um host remoto rodando Ubuntu. Eu não posso usar uma chave ssh porque o login ssh vai acontecer a partir de um script bash executado dentro de um servidor que eu não tenho acesso (acho servidor de integração contínua como o Bamboo).

Eu entendo que esta não é uma prática ideal, mas eu quero configurar o host remoto para não pedir a senha ou poder fazer o login com algo como ssh --passsword foobar user@host , algo como o MySQL permite que você faça por logins .

Não estou achando isso em man ssh e estou aberto a qualquer alternativa para contornar esse problema.

    
por mmla 15.05.2012 / 23:36

3 respostas

131

No Ubuntu, instale o pacote sshpass e use-o assim:

sshpass -p 'YourPassword' ssh user@host

sshpass também suporta a passagem da senha interativa do teclado de um arquivo ou de uma variável de ambiente, o que pode ser uma opção mais apropriada em qualquer situação em que a segurança seja relevante. Veja man sshpass para detalhes.

    
por 28.12.2012 / 01:51
17

Se a sua alternativa é colocar uma senha em um script ou em uma linha de comando ssh ou arquivo de texto simples, então você está MUITO melhor usando um ssh chave em vez disso. De qualquer forma, qualquer pessoa que tenha acesso à conta em que o script ssh client está armazenado poderá usá-la para entrar no servidor, mas pelo menos no caso de uma chave ssh , o OpenSSH a suporta corretamente, você não conceda acesso por outros meios além de ssh , é mais facilmente revogável se necessário, etc ...

Você terá que explicar por que você tem um requisito para não usar uma chave ssh.

Considere também usar um comando forçado ( command="..." no arquivo .ssh/authorized_keys ) para que o cliente tenha acesso somente para executar o comando que eles precisam no servidor, em vez de um shell completo.

    
por 15.05.2012 / 23:45
9

Primeiro, como os outros entrevistados, recomendo apenas usar chaves ssh. Mas vou assumir que a pessoa que controla o servidor simplesmente não permitirá que você use a autenticação de chave ssh e você deve usar a autenticação de senha.

Você pode usar o ControlMaster e o ControlPath.

Seja A o servidor ao qual você não terá acesso (pense em servidor de integração contínua como o Bamboo) e C seja o host remoto que executa o Ubuntu.

Agora vamos B ser algum computador que você controle. Se você não puder fornecer um computador B adequado, esta resposta não funcionará.

  1. Crie um par de chaves e adicione a parte pública ao arquivo authorized_keys de B. Dê A a chave privada. Agora você pode entrar em B de A sem uma senha.
  2. Em B manualmente ssh -M -S /tmp/controlpath C e insira sua senha no prompt. Depois disso, você poderá fazer o login no C de A sem uma senha ssh -S /tmp/controlpath C .

No script em A você pode escrever ssh B ssh C dostuff .

Toda vez que você reiniciar o B, você terá que restabelecer a conexão ssh -M -S /tmp/controlpath C .

    
por 18.05.2012 / 00:13