Como automatizar o login SSH com senha? Estou configurando minha VM de teste, portanto, segurança pesada não é considerada. SSH escolhido para segurança aceitável com configuração mínima.
Lembro-me de ter feito isso com alguns truques que alguém me guiou, mas não me lembro agora do truque que usei ...
O FreeBSD não aceitou chaves sem senha. Não fique tentado. No entanto, alguns servidores Linux o aceitaram. Acredito que o servidor Linux tenha sido configurado incorretamente.
Essa é uma pergunta válida. Por exemplo, quero permitir que um usuário insira uma senha e faça login em outra máquina usando-a. Não posso assumir que haverá chaves ssh distribuídas em todas as nossas máquinas. As respostas abaixo até agora não ajudam nessa situação.
— Dfrankow 12/04/12
Pergunta muito importante. Também preciso de uma resposta, meu provedor de espaço na web bloqueia para colocar arquivos-chave no servidor, então devo passar a senha sem arquivos-chave.
Não use uma senha. Gere uma chave SSH sem senha e envie-a para sua VM.
Se você já possui uma chave SSH, pode pular esta etapa ... Basta pressionar Entera chave e as duas senhas:
Copie suas chaves no servidor de destino:
Agora tente fazer login na máquina com ssh 'id@server'e faça o check-in:
para garantir que não adicionamos chaves extras que você não esperava.
Por fim, verifique o login ...
Você também pode usar o recurso ssh-agentse quiser tentar manter suas chaves protegidas com uma senha.
Eu finalmente decidi usar pares de chaves. Porque eu percebi que é a maneira mais simples.
@Eonil: Não fique tentado a usar chaves sem uma frase secreta. Aprenda a usar o ssh-agent ou o pageant.
Esta é uma boa resposta, mas não a resposta correta para a pergunta.
Esse tipo de resposta realmente me irrita. Essa não era a questão. Ninguém perguntou como usar pares de chaves.
Isso não responde à pergunta. É uma boa resposta para uma pergunta completamente diferente, mas é terrível para a pergunta.
— srchulo 4/01/17
Sim, às vezes você não pode usar a autenticação baseada em chave por vários motivos. Por exemplo, agora não posso usar o keyauth em um servidor plesk porque, fora da caixa, ele não está ativado e não tenho root.
+1! Como uma observação lateral, você precisa executar sshuma operação simples uma vez antes de usar sshpass, para confirmar a impressão digital RSA
-1 por ter que usar a senha no comando. Isso registra a senha .bash_historyem texto sem formatação na sua máquina.
@MisterDood Você pode executar history -ro comando para apagar seu histórico. Bom ponto embora.
Dica profissional: se você não deseja que um comando específico apareça em .bash_history, prefixe o comando com um espaço. Isso simplesmente funciona. No entanto, os usuários desse comando devem estar mais preocupados com o fato de que usuários não privilegiados no sistema possam ver a linha de comando completa com ps, que, é claro, inclui a senha. Como as sessões ssh tendem a ter vida longa, esse é um problema de segurança.
Embora a resposta correta para sua pergunta seja sshkey , existe uma maneira mais segura - as chaves SSH. Você está a apenas três etapas da solução:
Gere um par de chaves rsa :
copie-o no servidor com um comando simples :
agora você pode fazer login sem senha :
Funciona bem com os valores padrão. Usar ~ / rsa4live.pub não funcionou para mim ao tentar ssh-copy-id.
Se você quer este passos para trabalhar para usuário diferente, 1. keygen-ssh 2. ssh-copy-id nazir @ hostname 3. ssh nazir @ hostname
Para mim foissh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
E? A resposta está acima, sshpass ...
Funcionou, mas não pode imprimir stdout da máquina remota.
funciona bem para algumas máquinas que não podem colocar a chave com antecedência, pois o endereço IP é alterado sempre.
que vai ser bom para adicionar -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/nullpara o comando ssh, assim como para evitar aceitar a máquina em known_hosts
B .. B, mas muh chaves SSH ...
Exemplo mais detalhado deste script você pode encontrar em: linuxaria.com/howto/... Este exemplos aqui deve trabalhar com comandos remotos demais
Isso pode não lhe ser útil, mas você pode fazê-lo com o Perl:
Da mesma forma, você pode fazer isso com Ruby github.com/net-ssh/net-ssh
Estou surpreso que ninguém mencionado plinkno putty-toolspacote no Ubuntu:
Também está disponível no Windows e a sintaxe é compatível principalmente com o cliente openssh.
Para Windows sua resposta for boa, unfurtunally / user unix linux geralmente não têm Plink
ele está no putty-toolspacote
O logon único SSH geralmente é obtido com autenticação de chave pública e um agente de autenticação. Você pode adicionar facilmente sua chave de VM de teste a um agente de autenticação existente (veja o exemplo abaixo). Existem outros métodos, como gssapi / kerberos, mas são mais complexos.
Nas situações em que passwordé o único método de autenticação disponível, o sshpass pode ser usado para inserir automaticamente a senha. Por favor, preste atenção especial à seção CONSIDERAÇÕES DE SEGURANÇA da página de manual . Nas três opções, a senha é visível ou armazenada em texto sem formatação em algum momento :
Canal anônimo (recomendado pelo sshpass)
É bastante complicado no bash, sem dúvida mais fácil com linguagens de programação. Outro processo pode ser anexado ao seu pipe / fd antes que a senha seja gravada. A janela de oportunidade é bastante curta e limitada aos seus processos ou raiz.
Você e o root podem ler as variáveis ​​de ambiente do seu processo (por exemplo, sua senha) enquanto o sshpass está em execução ( cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=). A janela de oportunidade é muito mais longa, mas ainda limitada aos seus próprios processos ou raiz, e não a outros usuários.
Argumento da linha de comando (menos seguro)
Isso é conveniente, mas menos seguro, conforme descrito na página de manual. Os argumentos da linha de comando são visíveis para todos os usuários (por exemplo ps -ef | grep sshpass). O sshpass tenta ocultar o argumento, mas ainda existe uma janela durante a qual todos os usuários podem ver sua senha passada pelo argumento.
Defina sua variável bash HISTCONTROL como ignorespaceou ignorebothprefixe seus comandos sensíveis com um espaço. Eles não serão salvos na história.
A senha é muito importante. Qualquer pessoa que, de alguma forma, obtenha o arquivo de chave privada não poderá usá-lo sem a senha.
Configurar o agente de autenticação SSH
Conecte-se como de costume
A vantagem é que sua chave privada é criptografada e você só precisa digitar sua senha uma vez (também através de um método de entrada mais seguro).
Claro que você não deseja usar chaves SSH em vez de senhas? Dessa forma, é seguro e automático.
Usar chaves SSH sem senha é apenas um pouco mais seguro do que usar senhas em um arquivo.
@yunzen Incorreto. A autenticação de chave protege você contra ataques mitm, mesmo que você não conheça a chave do host. Um invasor pode se passar por um servidor, mas nunca se conectar ao servidor real. Com a autenticação de senha, qualquer servidor ao qual você se conectar (legítimo ou não) verá a senha. Por esses motivos, uma chave ssh sem senha é muito mais segura do que apenas armazenar a senha em um arquivo.
@SteveBennett É a mesma resposta que foi aceita e foi postada antes, embora tenha menos detalhes.
Bem, eu diria que a resposta aceita é uma resposta decente a uma pergunta que não foi feita. Isso não é nada.
— 9788 Steve Bennett #
Dependendo das suas necessidades de automação, talvez o Ansible seja um bom ajuste para você. Ele pode gerenciar bem coisas como solicitar senha, solicitar senha sudo, várias maneiras de alterar o uso, usar com segurança segredos criptografados (cofre).