Login SSH com senha em texto não criptografado como parâmetro? [duplicar]

Esta pergunta já tem respostas aqui :

Comentários

  • serverfault.com/ question / 241588 / …
  • A maneira segura é gerar a chave SSH com ssh-keygen -t rsa -b 2048 e usar esta chave para Faça login no servidor remoto como alternativa, você pode instalar " sshpash " e, em seguida, pode fazer ssh de sua máquina com o seguinte comando sshpass -p ' senha ' nome de usuário ssh @ nome do servidor
  • A pergunta para a qual o redirecionamento é diferente não é a mesma. Este está pedindo uma maneira de iniciar uma sessão interativa.

Resposta

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

sshpass -p "YourPassword" ssh [email protected] 

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

Comentários

  • Embora não seja recomendado e não seja uma boa prática, esta é exatamente a resposta à pergunta. Considere o uso de chaves conforme declarado acima. Mas se houver ' s um grande problema de tecnologia, esta é a solução pedida
  • Eu apenas votei positivamente na resposta. Não " racional por que não ' você faz dessa maneira " respostas. Apenas a resposta. portanto, eu votei positivamente em você 🙂
  • Eu não ' odeio completamente o sshpass, na verdade eu ' estou usando em uma base temporária. No entanto, usar ' -p ' é desnecessário e indesejável. Defina a variável SSHPASS primeiro e, em seguida, execute sshpass -e ssh < ssh-args >.
  • @Brad If você tem root na caixa, você pode instalar sshpass usando yum --enablerepo=epel install sshpass.
  • Esta resposta também funciona no Manjaro ( Baseado em arquitetura).

Resposta

Se a sua alternativa for colocar uma senha em um script ou ssh linha de comando ou arquivo de texto simples, então você “re MUITO melhor usar uma chave ssh em vez disso. De qualquer forma, qualquer pessoa que tenha acesso à conta onde o ssh script do cliente está armazenado seria capaz de usar isso para entrar no servidor, mas pelo menos no caso de uma chave ssh, o OpenSSH oferece suporte adequado, você não concede acesso por outros meios que não ssh, é mais facilmente revogado se necessário, etc …

Você terá que explicar porque é necessário não usar uma chave ssh.

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

Comentários

  • O host remoto é na verdade uma VM usada por outros engenheiros sem nenhum recurso que valha a pena arriscar, exceto cópias do código de automação de teste. Para fins de discussão, digamos que o único acesso que tenho é adicionar o arquivo de script, não adicionar chaves ssh em ~/.ssh/.
  • Esse ' é altamente artificial. Um cenário um pouco menos planejado seria que um administrador mal orientado do servidor desabilitou os logins de chave ssh (PubkeyAuthentication no em /etc/ssh/sshd_config). Em qualquer dos casos, a melhor solução é corrigir o problema subjacente que o impede de fazer logins de chave ssh. Caso contrário, consulte a questão apontada por Gilles .
  • @MichaelM você não precisa adicionar chaves SSH em ~/.ssh/. Adicione a chave onde quiser e use ssh -i /path/to/id_rsa
  • A resposta Stackexchanges deve responder à pergunta, não argumentar que a pergunta está correta. Tenho um cenário válido para isso. Preciso configurar meu ~/.ssh/authorized_keys em 95 caixas diferentes. Eu escrevi um script para enviar automaticamente o meu arquivo authorized_keys, mas ainda pede a senha. Ter o script para solicitar a senha uma vez no início seria melhor.
  • Eu concordo com flarn2006.Você não pode dizer " que esta pergunta é idiota, então aqui ' é uma resposta a uma pergunta diferente porque eu acho que ' uma pergunta melhor e eu sei a resposta para ela ".

Resposta

Em primeiro lugar, como os outros entrevistados, recomendo apenas usar as chaves ssh. Mas assumirei 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 ControlMaster e ControlPath.

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

Agora, seja B algum computador que você controla. Se você puder não 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 chave privada A. Agora você pode entrar em B a partir de A sem uma senha.
  2. Em B manualmente ssh -M -S /tmp/controlpath C e digite sua senha no prompt. Depois disso, você deve ser capaz de entrar em C a partir de A sem uma senha ssh -S /tmp/controlpath C.

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

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *