Contrairement à bash
, la demande de mot de passe de ssh
n'utilise aucune bibliothèque spéciale d'entrée terminal comme readline
. Les fonctionnalités d'édition de ligne sont simplement les fonctionnalités d'édition de ligne POSIX de base.
Vous avez donc un TTY POSIX en mode "cuit" (pas brut), aka mode canonique, et la seule édition de ligne disponible est celle fournie par le noyau. Voir stty(1)
, et remarquez que
kill = ^U
. C'est également là que le caractère de retour arrière est défini (erase = ^?
). L'effacement de mot (^W
) est pratique lorsque vous ne tapez pas à l'aveuglette.
lnext = ^V
signifie que vous pouvez taper contrôle-v puis n'importe quoi (y compris contrôle-c) pour obtenir un contrôle-c littéral.
Pour déboguer ce que vous essayiez de faire à l'aveuglette, exécutez cat
ou cat > /dev/null
dans votre terminal. Tapez des choses, puis voyez ce qui fonctionne et ce qui ne fonctionne pas pour le modifier.
readline
(utilisé par bash
) lit des caractères bruts et effectue l'édition de ligne dans l'espace utilisateur. Ses liaisons par défaut sont compatibles avec les caractères de contrôle TTY par défaut, cependant, pour le sous-ensemble des fonctionnalités d'édition qu'ils fournissent tous les deux.
Readline va bien au-delà de la simple édition de ligne d'un TTY basique. (par ex. un TTY ne peut supprimer que des caractères à la fin de la ligne, donc il n'y a pas de ^a
et delete
ou flèche gauche/droite)
Quand bash
exécute une commande en premier plan, il met d'abord le TTY en mode canonique (car c'est la valeur par défaut). Donc, exécuter stty -a
(sans redirection) verra toujours son propre terminal en mode canonique. Mais si vous redirigez l'entrée depuis un autre TTY où bash
est en cours d'exécution, vous pouvez voir les paramètres terminaux que bash + readline a appliqués. par ex. stty -a < /dev/pts/12
montre -icanon
pour le mode brut car j'ai un bash
en cours d'exécution sur ce terminal. (J'ai changé d'onglet et exécuté tty
, puis utilisé ce chemin de fichier de périphérique à partir du premier terminal). Si j'exécutais cat
dans cet autre terminal, je verrais icanon
pour le mode canonique.
Lié : La démystification du TTY
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface
7 votes
En ce qui concerne Ctrl+A, dans le terminal cela signifie généralement "aller au début de la ligne". L'ensemble de touches utilisé dans le terminal (surtout bash) est souvent plus proche d'Emacs que de Windows.
18 votes
Sshing en tant que root est généralement considéré comme une pratique très très mauvaise.
0 votes
Pour supprimer des caractères de l'écran, vous devrez utiliser des séquences de contrôle du curseur (si votre terminal les prend en charge). En exécutant
ssh
à partir d'un script, vous pouvez analyser la chaîne de paramètres avant de l'exécuter.4 votes
Veuillez prêter attention à ce que @Sam a dit. Vous devriez désactiver les connexions root partout. Connectez-vous en tant qu'utilisateur régulier avec un mot de passe compliqué, puis
su
pour devenir root. La prochaine étape consiste à désactiver les schémas d'authentification basés sur le mot de passe dans SSH et à utiliser des clés pour la connexion.0 votes
@kostix Je suis assez sûr que la désactivation des mots de passe devrait être la première étape. Si vous utilisez des mots de passe, alors avec su et root désactivé, il suffit d'entrer le mot de passe que l'attaquant a déjà deviné une deuxième fois après la connexion, donc vous ne gagnez quelque chose que si le nom d'utilisateur est difficile à deviner (ce qui n'est souvent pas le cas, je suppose sans avoir de statistiques). Et sans connexion par mot de passe, cela ajoute un deuxième secret, le mot de passe, mais cela vaut moins que la clé privée qui est un secret plus long.
0 votes
@Sam Je me souviens avoir eu une fois une installation où j'ai contourner mon routeur et activé l'accès root via ssh avec un mot de passe de dictionnaire. En l'espace de quelques semaines, quelqu'un en ligne avait piraté mon PC. On vit, on apprend...
0 votes
@Sam : Pas avec l'authentification par clé publique (et les mots de passe désactivés).