GNU/Linux >> Tutoriels Linux >  >> Linux

SSH rend tous les mots de passe saisis visibles lorsque la commande est fournie comme argument à la commande SSH

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'

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

Linux
  1. Générer des mots de passe sur la ligne de commande Linux

  2. Où vont les fichiers lorsque la commande Rm est émise ?

  3. Comment accéder au dernier argument d'une commande commentée ?

  4. Quelle commande permet de voir les fichiers cachés en SSH ?

  5. Comment utiliser la commande ssh-keygen pour configurer ssh sans mot de passe

Passer la sortie de la commande précédente à la suivante en tant qu'argument ?

Qu'est-ce qui définit la taille maximale d'un seul argument de commande ?

$_ Vs !$. Dernier argument de la commande précédente et redirection de sortie ?

Premiers caractères de la commande répétés à l'écran lors de l'achèvement ?

Toutes les façons de vérifier si un port est ouvert sous Linux

Comment connecter un hôte distant à l'aide de la commande ssh