
Quero fazer SSH em uma máquina remota, mas em vez de digitar a senha, quero redirecioná-la de outro arquivo.
Então eu tenho um arquivo password.txt
que armazena a senha. File.sh
é meu arquivo bash.
EmFile.sh
#!/bin/bash
ssh -T [email protected]
Ao executar o arquivo, eu fiz:
./File.sh < password.txt
Mas me pediram para inserir a senha de qualquer maneira.
Como faço para que a senha seja inserida no arquivo?
Responder1
SSH com 'senha em um arquivo' é comumente usado como autenticação de chave pública. Crie um par de chaves usando ssh-keygen
e carregue a chave pública para o outro host:
scp ./.ssh/id_rsa.pub [email protected]:~/
e coloque-o como ~/.ssh/authorized_keys
:
ssh [email protected]
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
ou, se um authorized_keys
arquivo já existir:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
defina as permissões apropriadas (600 para o arquivo, 700 para o diretório):
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
e inicie uma nova sessão ssh.
Responder2
Você pode usar sshpass
para fazer isso:
sshpass -f password.txt ssh -T [email protected]
Responder3
#!/usr/bin/expect -f
spawn ssh shw@hostname
expect -exact "shw@hostname's password: "
send -- "PASSWORD\r"
expect "$ "
interact
Expect é uma ferramenta para automatizar o processo.