Se eu executar isso:
ssh user@server 'mysql -u user -p'
Quando ele me pede a senha do MySQL, e eu começo a digitar, a senha fica visível na tela. Como posso evitar isso? Se eu entrar ssh
e executar o comando MySQL, tudo funcionará bem.
Se eu executar isso:
ssh user@server 'mysql -u user -p'
Quando ele me pede a senha do MySQL, e eu começo a digitar, a senha fica visível na tela. Como posso evitar isso? Se eu entrar ssh
e executar o comando MySQL, tudo funcionará bem.
Respostas:
Se você fornecer um comando remoto para executar, o SSH não alocará um tty; portanto, o comando remoto não poderá desativar o eco. Você pode forçar o SSH a fornecer um tty usando a -t
opção:
ssh -t user@server 'mysql -u user -p'
A opção equivalente (para -o
ou para o arquivo de configuração) é RequestTTY
. Eu recomendaria não usá-lo na configuração, pois pode ter efeitos indesejados para comandos não interativos .
RequestTTY
em man 5 ssh_config
.
Se você puder confiar em [*] a segurança do computador remoto, poderá armazenar a senha em um arquivo de opções protegido adequadamente, conforme sugerido no capítulo Diretrizes do usuário final para segurança de senha do manual, sem a necessidade de se comunicar por meio de ssh
ou digitar cada Tempo.
Especificamente, você pode adicionar uma linha na seção [client] do arquivo .my.cnf
no seu diretório pessoal:
[client]
password=your_pass
Obviamente, você deve impedir que esse arquivo seja acessível a qualquer pessoa além de você mesmo, definindo o modo de acesso a arquivos como 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'
onde user110971
é o nome de usuário da sua conta.
ssh -t
)Esse problema ocorre toda vez que você envia um comando ssh
e precisa inserir a entrada porque, por padrão, ssh
não aloca uma pseudo-tty.
Você pode forçar a alocação de tty com a opção -t
(até mais de uma, se necessário):
-t
Forçar alocação pseudo-tty. Isso pode ser usado para executar programas arbitrários baseados em tela em uma máquina remota, o que pode ser muito útil, por exemplo, ao implementar serviços de menu. Várias
-t
opções forçam a alocação de tty, mesmo se ssh não tiver tty local.
Como você pode ler neste post do Debian (Jul_11_2008) sobre sudo
, é um problema antigo que adora repetir:
ssh user@server "sudo ls" password: password
E a senha é mostrada
A solução é forçar o ssh a alocar um pseudo-tty, com o sinalizador -t:
ssh -t user@server sudo ls
[*] Se você pode confiar em deixar a senha em um arquivo acessível apenas por você e raiz no trabalho cliente.
Se for possível reiniciar o computador remoto alterando o SO ou remover o disco rígido, o computador não poderá ser considerado completamente seguro ... mas, nesse caso, o próprio banco de dados não estará seguro.