adicionando senha ao .ssh / config

16

Estou usando o Ubuntu 12.04. Eu estou usando o ssh para conectar-se a muitos servidores diariamente, então eu coloco seus parâmetros no arquivo .ssh / config ; assim:

Host server1
User tux
Port 2202
HostName xxx.x.xx.x

Existe uma maneira de colocar senhas neste arquivo, para cada conexão? Então, quando o servidor pede senha, o terminal coloca o seu passe e o envia para o servidor, então eu não preciso digitar a senha toda vez. Também não quero usar o par de chaves pública / privada.

    
por Ajo Augustine 30.08.2013 / 07:00

5 respostas

26

Não, não há nenhum método para especificar ou fornecer na linha de comando a senha de maneira não interativa para autenticação ssh usando um mecanismo integrado openssh. Pelo menos não um que eu saiba. Você pode codificar sua senha para esperar o script, mas também não é uma boa solução.

Você definitivamente gostaria de usar os keypairs para autenticação sem senha, como Michael afirmou, no final, a chave privada é uma senha muito grande no arquivo.

    
por 30.08.2013 / 07:09
15

Para evitar a sequência de comentários: Sim, isso é inseguro (nem mesmo indiscutivelmente inseguro). Eu recomendo strongmente 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 servidores de produção com potencial sem um reset / format completo.

Eu queria configurar isso, pois acho que meu switch 2950 não suporta chaves privadas / públicas e espero que, em algum momento, tenha esse conhecimento, mas ainda não estou lá.

Usando um alias e sshpass isso pode ser feito.

  1. Instalar o sshpass
  2. Altere seu arquivo .ssh / config para incluir o nome de usuário listado na pergunta
  3. Adicione um alias ao seu terminal (usei .bashrc e recomendaria configurações gloabl)
  4. Use o alias para efetuar login no destino

Meu alias de exemplo é:

alias ssc='sshpass -pcisco ssh'

Onde "cisco" é a senha. Note que não há espaço entre o -p e a senha.

O uso é (fazendo referência à pergunta):

ssc server1

Observação: 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 privada / pública e não essa resposta devem ser usados

    
por 08.11.2015 / 21:00
7

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:

ssh-keygen

Copie a chave nos seus servidores / áreas de trabalho:

ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:

Isso é tudo. Nunca será solicitado a senha novamente.

Também recomendo remover a autorização de senha em geral, mas isso é com você.

    
por 30.08.2013 / 09:10
2

Não há como fazer isso com o ssh, é tão inseguro quanto possível.

Como Danila mencionou, você poderia usar esperar scripts, mas eu não me incomodaria.

Eu me pergunto o que você está tentando alcançar? Você quer pular de um servidor para outro? Nesse caso, você deseja configurar e usar o ssh-agent em sua estação de trabalho e ativar o encaminhamento do agente nos hosts de destino; Dessa forma, a troca de credenciais será roteada para o seu agente local sem ter que copiar sua chave privada.

    
por 30.08.2013 / 07:17
-1

Você pode fazer isso de maneira mais segura usando sshpass

  1. Defina sua senha sem histórico

    export PS = sua_password ; histórico -d $ (histórico 1)

  2. Defina o alias do host como acima em ~ / .ssh / config

  3. Use ssh pass para usar a variável de ambiente e faça login na máquina necessária com 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

    
por 29.05.2017 / 08:53