GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH macht alle eingegebenen Passwörter sichtbar, wenn der Befehl als Argument für den SSH-Befehl bereitgestellt wird

Wenn Sie einen Remote-Befehl zum Ausführen bereitstellen, weist SSH kein tty zu, sodass der Remote-Befehl Echo nicht deaktivieren kann. Mit -t können Sie SSH dazu zwingen, ein tty bereitzustellen Möglichkeit:

ssh -t [email protected] 'mysql -u user -p'

Die entsprechende Option (für -o oder für Konfigurationsdatei) ist RequestTTY . Ich warne davor, es in der Konfiguration zu verwenden, da es unerwünschte Auswirkungen auf nicht interaktive Befehle haben kann.


Speichern des Passworts in einer geschützten Optionsdatei

Wenn Sie der Sicherheit des Remote-Computers vertrauen können, können Sie das Passwort in einer ordnungsgemäß geschützten Optionsdatei speichern, wie in den Richtlinien für Endbenutzer zur Passwortsicherheit vorgeschlagen Kapitel des Handbuchs, ohne dass über ssh kommuniziert werden muss oder jedes Mal eingeben.

Insbesondere können Sie eine Zeile im Abschnitt [client] der Datei .my.cnf hinzufügen in Ihrem Home-Verzeichnis:

[client]
password=your_pass

Natürlich müssen Sie dafür sorgen, dass niemand außer Ihnen auf diese Datei zugreifen kann, indem Sie den Dateizugriffsmodus auf 400 oder 600 setzen, z. B. mit

chmod 600 ~/.my.cnf

Dann können Sie so etwas wie

verwenden
ssh [email protected] 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'

wobei user110971 ist der Benutzername Ihres Kontos.

SSH dazu zwingen, einen Pseudo-TTY (ssh -t )

Dieses Problem tritt jedes Mal auf, wenn Sie einen Befehl über ssh senden und Sie müssen die Eingabe einfügen, da standardmäßig ssh weist kein Pseudo-TTY zu.

Sie können die tty-Zuordnung mit der Option -t erzwingen , (bei Bedarf sogar mehrere):

-t

Pseudo-TTY-Zuweisung erzwingen. Dies kann verwendet werden, um beliebige bildschirmbasierte Programme auf einem entfernten Computer auszuführen, was sehr nützlich sein kann, z. bei der Implementierung von Menüdiensten. Mehrere -t Optionen erzwingen eine tty-Zuordnung, selbst wenn ssh kein lokales tty hat.

Wie Sie in diesem Debian-Beitrag (11. Juli 2008) über sudo lesen können , es ist ein altes Problem, das gerne wiederkehrt:

ssh [email protected] "sudo ls"  
password: password  

Und das Passwort wird Ihnen angezeigt

Die Lösung besteht darin, ssh mit dem Flag -t zu zwingen, ein Pseudo-tty zuzuweisen:

ssh -t [email protected] sudo ls

Hinweis:

Wenn Sie sich darauf verlassen können, das Passwort in einer Datei zu belassen, auf die nur Sie zugreifen können, und root auf der funktionierenden Klient.
Wenn es möglich ist, den entfernten Computer neu zu starten, das Betriebssystem zu ändern oder die Festplatte zu entfernen, kann der Computer nicht als vollständig sicher betrachtet werden... aber in diesem Fall ist die Datenbank selbst nicht sicher.


Die Mount-Option „hidepid“ für proc fs ist ebenfalls wertvoll. Es macht Ihre Befehlszeilen in der Prozessliste für andere Benutzer unsichtbar. fstab-Beispiel:

proc /proc proc hidepid=1 0 0

Linux
  1. Wohin gehen Dateien, wenn der Rm-Befehl ausgegeben wird?

  2. Wie greife ich auf das letzte Argument eines kommentierten Befehls zu?

  3. So verwenden Sie den Befehl ssh-keygen, um passwortloses ssh zu konfigurieren

  4. Was bedeuten unter Linux alle Werte im obersten Befehl?

  5. Wie kann ich das Argument des vorherigen Bash-Befehls abrufen?

Werden die ersten Zeichen des Befehls beim Beenden im Display wiederholt?

Alle Möglichkeiten, um zu überprüfen, ob ein Port in Linux geöffnet ist

So verbinden Sie einen Remote-Host mit dem ssh-Befehl

Der Befehl pip install --upgrade pip installiert alle Versionen von pip

Wie kann ich SVN in der Befehlszeile ein SSH-Passwort bereitstellen?

Löschen aller Partitionen über die Befehlszeile