Si vous fournissez une commande distante à exécuter, SSH n'alloue pas de tty, de sorte que la commande distante ne peut pas désactiver l'écho. Vous pouvez forcer SSH à fournir un tty en utilisant le -t
choix :
ssh -t [email protected] 'mysql -u user -p'
L'option équivalente (pour -o
ou pour le fichier de configuration) est RequestTTY
. Je vous déconseille de l'utiliser dans la configuration car cela peut avoir des effets indésirables pour les commandes non interactives.
Stocker le mot de passe dans un fichier d'options protégé
Si vous pouvez faire confiance à la sécurité de l'ordinateur distant, vous pouvez stocker le mot de passe dans un fichier d'options correctement protégé, comme suggéré dans les Directives de l'utilisateur final pour la sécurité des mots de passe chapitre du manuel, sans avoir besoin de communiquer via ssh
ou de taper à chaque fois.
Concrètement vous pouvez ajouter une ligne dans la section [client] du fichier .my.cnf
dans votre répertoire personnel :
[client]
password=your_pass
Bien sûr, vous devez empêcher que ce fichier soit accessible à quiconque sauf à vous-même, en définissant le mode d'accès au fichier sur 400 ou 600 avec, par exemple
chmod 600 ~/.my.cnf
Ensuite, vous pouvez utiliser quelque chose comme
ssh [email protected] 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
où user110971
est le nom d'utilisateur de votre compte.
Forcer le ssh à allouer un pseudo tty (ssh -t
)
Ce problème se produit chaque fois que vous envoyez une commande via ssh
et vous devez insérer l'entrée car, par défaut, ssh
n'allouera pas de pseudo-tty.
Vous pouvez forcer l'allocation tty avec l'option -t
, (voire plusieurs si besoin) :
-t
Forcer l'allocation de pseudo-tty. Cela peut être utilisé pour exécuter des programmes arbitraires basés sur l'écran sur une machine distante, ce qui peut être très utile, par ex. lors de la mise en œuvre des services de menu. Plusieurs
-t
les options forcent l'allocation de tty, même si ssh n'a pas de tty local.
Comme vous pouvez le lire dans cet article Debian (Jul_11_2008) à propos de sudo
, c'est un vieux problème qui revient régulièrement :
ssh [email protected] "sudo ls" password: password
Et le mot de passe vous est montré
La solution est de forcer ssh à allouer un pseudo-tty, avec le drapeau -t :
ssh -t [email protected] sudo ls
Remarque :
Si vous pouvez compter sur le fait de laisser le mot de passe dans un fichier accessible uniquement par vous et root sur le travail client.
S'il est possible de redémarrer l'ordinateur distant en changeant de système d'exploitation ou de supprimer le disque dur, l'ordinateur ne peut pas être considéré comme complètement sécurisé... mais dans ce cas, la base de données elle-même ne sera pas sécurisée.
L'option de montage "hidepid" pour proc fs est également précieuse. Cela rend vos lignes de commande invisibles dans la liste des processus pour les autres utilisateurs. Exemple fstab :
proc /proc proc hidepid=1 0 0