Armazenando a senha em um arquivo de opções protegido
Se você puder confiar [*] na segurança do computador remoto, poderá armazená-la em um arquivo de opções devidamente protegido, conforme sugerido nas Diretrizes para usuários finais de segurança por senha capítulo do manual [ 1 ] , sem a necessidade de se comunicar através de ssh
ou digitar cada vez.
Especificamente, você pode adicionar uma linha na seção [cliente] do arquivo .my.cnf
em seu diretório pessoal.
[client]
password=your_pass
É claro que você precisa impedir que esse arquivo seja acessível a qualquer pessoa, exceto você mesmo, configurando o modo de acesso a arquivos para 400 ou 600 com, por exemplo,
chmod 600 ~/.my.cnf
Então você pode usar algo como
ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
user110971
é o nome de usuário da sua conta.
Forçando o ssh a alocar um pseudo tty ( ssh -t
)
Esse problema ocorre toda vez que você envia um comando através de ssh
e você precisa inserir a entrada porque, por padrão, ssh
não alocará uma pseudo-tty.
Você pode forçar a alocação tty com a opção -t
(mais do que uma, se necessário):
-t
Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
Como você pode ler nesta postagem do debian (jul_11_2008) [ 2 ] sobre o sudo é um problema antigo que adora recorrer:
ssh user@server "sudo ls"
password: password
And password is shown you
A solução é forçar o ssh a alocar uma pseudo-tty, com o sinalizador -t:
ssh -t user@server sudo ls
Nota:
[*] Se você puder confiar para deixar a senha em um arquivo acessível somente por você e root no cliente working .
Se é possível reiniciar o computador remoto alterando o sistema operacional ou para remover o disco rígido que não é um computador para ser considerado completamente seguro ... mas nesse caso, mesmo o banco de dados inteiro não terá certeza ...