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"
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.
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]
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 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 ...
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.
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"
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".