shell script para ssh

2

alguém pode me dizer como eu posso criar um script de shell para ssh onde eu não tenho que digitar a senha manualmente?

Eu aprendi a esperar o comando e tentei vários exemplos, mas não funcionou. Alguém pode me ajudar?

Por favor, responda-me o mais breve possível.

    
por Lokesh Paunikar 19.02.2011 / 15:51

7 respostas

2

Se, por qualquer motivo, você precisar confiar apenas no esperado, tente algo como (toda uma linha):

expect -c "spawn ssh <username>@a<address> <ssh commands/options> ; expect assword ; send $PASSWORD\n ; interact"

    
por 19.02.2011 / 22:28
8

Você pode usar ssh-keygen e ssh-copy-id para criar uma chave rsa e adicionar sua chave como host permitido para o computador remoto.

Crie uma chave ssh:
$ ssh-keygen -t rsa

Copie-o para o computador remoto como um host permitido:
$ ssh-copy-id user@<IP/hostname>
Por exemplo, $ ssh-copy-id [email protected]

    
por 19.02.2011 / 15:57
6

Você pode usar o agente ssh para fornecer a senha somente uma vez durante a sessão inteira ou usar autenticação de chave sem senha .

Pessoalmente, eu recomendo que você não use esses scripts onde você especifica senhas na linha de comando ou armazena-as em um arquivo de texto. Se o seu sistema estiver comprometido, você definitivamente se arrependerá disso. Lembre-se de que a primeira coisa que as pessoas más observam é seu .bash_history .

    
por 19.02.2011 / 15:55
2

Por favor, considere não usar uma senha e, em vez disso, use uma chave assimétrica (por exemplo, RSA). Ele fornece uma segurança muito melhor e remove todo o incômodo de manter senhas ...

    
por 19.02.2011 / 15:56
1

Não coloque sua senha em um script de shell. Scripts shell não são o lugar para colocar sua senha. Colocar sua senha em um script de shell é desaconselhável. Não é recomendado colocar sua senha em um script de shell.

Se o conselho acima não estiver claro, repita algumas dezenas de vezes até que seja.

Com o SSH, sua melhor opção é usar ssh-keygen para criar um par de chaves pública / privada. Em seguida, na máquina remota, em ~/.ssh (ou onde quer que seu SSH tenha sido configurado para procurar sua configuração) edite o arquivo authorized_keys e cole sua chave PUBLIC . O arquivo será, em seguida, algo parecido com isto:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQ...elided for security...fdVEkAPINVd0=rsa-key-20100920

Quando estiver no lugar, você não precisará de uma senha para fazer login.

editado para adicionar

Você precisa colocar seu arquivo-chave PRIVADO em seu diretório ~/.ssh local e certificar-se de que somente possa lê-lo.

mais editado para adicionar

Esta resposta menciona o utilitário ssh-copy-id , que substitui todo o manual edição eu mencionei. Nice toque isso. Use isso em vez disso.

    
por 19.02.2011 / 15:56
1

ssh-key: s é usado para isso, e o usecase básico para adicionar um se parece com isto:

ssh-keygen 
scp .ssh/id_rsa.pub user@server:.
ssh user@server "cat id_rsa.pub >> .ssh/authorized_keys"
ssh user@server "rm ~/id_rsa.pub"
    
por 19.02.2011 / 23:06
0

Você precisa criar um par de chaves privadas / públicas.

Em seguida, anote sua chave pública no host remoto que você está enviando para o arquivo ssh:

 /home/user/.ssh/authorized_keys2

Existem muitos tutoriais sobre como fazer isso. Apenas GOOGLE para: "ssh sem senha authorized_keys2".

    
por 19.02.2011 / 15:55

Tags