Como parte de um script de inicialização, tenho que abrir automaticamente várias janelas do terminal gnome, um desses terminais envia automaticamente:
ssh [email protected]
A limitação disso é que ainda preciso digitar uma senha para concluir a conexão SSH.
O que eu quero fazer é que meu script inicie o comando e conclua a conexão. Nesse sentido, tentei seguir as instruções descritas na resposta aceita aqui .
No sistema em que desejo me conectar, executei:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
Em seguida, solicitou que eu digite uma senha. Deixei isso em branco, pois não tinha certeza do que seria, então presumi que definir um exigiria desbloqueá-lo com a frase secreta toda vez que eu o usasse.
Continuando com as instruções acima, executei e recebi o seguinte:
ssh-copy-id user@IP
ERROR: No identities found
Uma pesquisa rápida revelou que eu precisava especificar o local da chave, pois ela não estava no local de salvamento padrão, então resolvi:
ssh-copy-id -i /home/user/ssh/keys/server1key.pub [email protected]
Depois de pedir a senha do servidor, ele adicionou a chave com sucesso. No entanto, ao tentar fazer login com "ssh user @ IP", ainda era solicitada a senha.
Tanto quanto sei, segui as instruções vinculadas corretamente, ou estou faltando alguma coisa ou talvez uma configuração existente esteja me impedindo de fazer com que isso funcione?
Ambos os sistemas usam 18.04 e openssh.
fonte
Respostas:
Ele falha pelo mesmo motivo que
ssh-copy-id
falhou na primeira vez - ou seja, porque você escolheu um local não padrão para o arquivo de identidade.Você pode resolvê-lo da mesma forma, adicionando
-i /home/user/ssh/keys/server1key
ao seussh
comando - nota que o lado do cliente precisa a localização da privada arquivo de chave.A partir de
man ssh
Como alternativa, você pode criar uma
~/.ssh/config
entrada de arquivo para o host ao longo das linhas defonte
~/.ssh/config
, caso contrário, o OpenSSH usa o padrão geral do sistema/etc/ssh/ssh_config
. Em alguém encontrar casos que é útil, eu enviou um ssh_config pré-construído ao meu GitHub um tempo atrás como um ponto de partida para os usuários que podem não ter tempo para ler a página de manual ssh_config~/.ssh/config
substituirão os do globalssh_config
, mas apenas ter o arquivo não desativará a configuração geral do sistema.Outro motivo que
ssh-copy-id
falha é que a chave não foi adicionada ao agente SSH.Primeiro, verifique e inicie se
ssh-agent
estiver em execução:Se você entrar no ID do processo, poderá adicionar sua chave:
Com
-k
você, adicione a chave ao chaveiro.Verifique se as chaves foram adicionadas com:
ssh-copy-id
deve estar trabalhando agora.fonte
Espero que isso funcione para você. "Sshpass -p yourpassword", ele fará o login automaticamente no host remoto.
[root @ localhost .ssh] # sshpass -p senha123 ssh -l root localhost
fonte
Basta executar 2 comandos:
Resposta longa:
E depois:
fonte