Estou usando o ubuntu 12.04. Estou usando o ssh para conectar-se a muitos servidores diariamente, então coloquei seus parâmetros no arquivo .ssh / config ; como isso :
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
Existe uma maneira de colocar senhas neste arquivo, para cada conexão? Portanto, quando o servidor solicita uma senha, o terminal coloca seu passe e o envia ao servidor, portanto, não preciso digitar a senha todas as vezes. Além disso, não quero usar o par de chaves pública / privada.
Respostas:
Não, não existe um método para especificar ou fornecer na linha de comando a senha de maneira não interativa para autenticação ssh usando um mecanismo interno openssh. Pelo menos não um que eu saiba. Você pode codificar sua senha no script de espera, mas também não é uma boa solução.
Você definitivamente gostaria de usar pares de chaves para autenticação sem senha, como Michael afirmou, no final, a chave privada é praticamente uma senha grande no arquivo.
fonte
Para evitar a sequência de comentários: Sim, isso é inseguro (nem mesmo inseguro). Eu recomendo fortemente que você faça isso apenas em uma situação de laboratório em uma rede isolada ou em uma situação semelhante que não envolva servidores de produção ou servidor de produção potencialmente sem uma redefinição / formato completo.
Eu queria configurar isso, pois não acho que meu switch 2950 suporte chaves privadas / públicas e espero que, em algum momento, obtenha esse conhecimento, mas ainda não estou lá.
Usando um alias e sshpass, isso pode ser feito.
Meu exemplo de alias é:
Onde "cisco" é a senha. Observe que não há espaço entre o -p e a senha.
O uso é (referenciando a pergunta):
Nota: Isso responde à pergunta no título apenas para aqueles que usam mecanismos de pesquisa. Se você estiver usando servidores como o exemplo da pergunta, pares de chaves pública / privada e não esta resposta devem ser usados
fonte
Sim, como mencionado acima, não há como salvar a senha simplesmente. Eu recomendaria usar a chave ssh para autorização.
primeiro, gere sua chave:
Em seguida, copie a chave nos seus servidores / desktops:
Isso é tudo. Você nunca será solicitado a senha novamente.
Também recomendo remover a autorização de senha em geral, mas isso depende de você.
fonte
sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"
mas esse programa é mais limpo e deixa clara a intenção.Não há como fazer isso com o ssh, é o mais inseguro possível.
Como Danila mencionou, você poderia usar scripts de expectativa, mas eu não me incomodaria.
Eu me pergunto o que você está tentando alcançar? Deseja pular de um servidor para outro? Nesse caso, você deseja configurar e usar o ssh-agent em sua estação de trabalho e habilitar o encaminhamento do agente nos hosts de destino; dessa maneira, a troca de credenciais será roteada para o seu agente local sem precisar copiar sua chave privada.
fonte
Eu uso esse script do
~/.local/bin
diretórioO que me permite especificar a senha como
#PS <password>
no.ssh/config
arquivo.Mas, como todo mundo diz, é melhor usar
ssh-keys
comssh-agent
quando é possívelfonte
A maneira correta de lidar com essa situação é usar um agente ssh baseado em sessão. Aqui está como:
A senha será mantida válida pelo restante da sessão. Você só precisa executar o primeiro comando uma vez e pode adicionar quantas chaves desejar depois disso. Quando a sessão é encerrada, o agente também é, para que não haja armazenamento codificado de uma senha.
Chocado que, depois de tanto tempo, essa resposta não estivesse aqui!
fonte
Você pode fazer isso de maneira mais segura usando sshpass
Defina sua senha sem histórico
exportar PS = sua_senha ; histórico -d $ (histórico 1)
Defina o alias do host como acima em ~ / .ssh / config
Use ssh pass para usar a variável de ambiente e efetue login na máquina necessária em um único comando
sshpass -p $ PS ssh host_alias
Seu ambiente está mantendo sua senha e é arriscado que qualquer script em execução possa vazar essa senha se você não souber o que está executando.
fonte
sshpass -p $PS ...