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.
ex)
echo password | ssh id@server
Isso não funciona.
Lembro-me de ter feito isso com alguns truques que alguém me guiou, mas não me lembro agora do truque que usei ...
ssh
password
automation
Eonil
fonte
fonte
Respostas:
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-agent
se quiser tentar manter suas chaves protegidas com uma senha.fonte
fonte
ssh
uma operação simples uma vez antes de usarsshpass
, para confirmar a impressão digital RSA.bash_history
em texto sem formatação na sua máquina.history -r
o comando para apagar seu histórico. Bom ponto embora.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 :
fonte
ssh-copy-id
.ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
Use expect:
Exemplo:
fonte
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null
para o comando ssh, assim como para evitar aceitar a máquina em known_hostsIsso pode não lhe ser útil, mas você pode fazê-lo com o Perl:
fonte
Estou surpreso que ninguém mencionado
plink
noputty-tools
pacote no Ubuntu:Também está disponível no Windows e a sintaxe é compatível principalmente com o cliente openssh.
fonte
putty-tools
pacoteO 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.
sshpass
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.
Variável de ambiente
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.Nota
Defina sua variável bash HISTCONTROL como
ignorespace
ouignoreboth
prefixe seus comandos sensíveis com um espaço. Eles não serão salvos na história.Autenticação de chave pública SSH
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).
fonte
Claro que você não deseja usar chaves SSH em vez de senhas? Dessa forma, é seguro e automático.
fonte
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).
Se isso não for adequado, sugiro o Expect, conforme sugerido em outra resposta.
fonte