GNU/Linux >> Znalost Linux >  >> Linux

SSH zviditelní všechna zadaná hesla, když je příkaz poskytnut jako argument příkazu SSH

Pokud poskytnete vzdálený příkaz ke spuštění, SSH nepřiděluje tty, takže vzdálený příkaz nemůže zakázat echo. Pomocí -t můžete přinutit SSH, aby poskytl tty možnost:

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

Ekvivalentní možnost (pro -o nebo pro konfigurační soubor) je RequestTTY . Varoval bych před jeho používáním v konfiguraci, protože to může mít nežádoucí účinky na neinteraktivní příkazy.


Uložení hesla do chráněného souboru možností

Pokud můžete důvěřovat zabezpečení vzdáleného počítače, můžete heslo uložit do řádně chráněného souboru možností, jak je navrženo v Pokynech pro koncové uživatele pro zabezpečení heslem kapitole manuálu, aniž by bylo nutné komunikovat prostřednictvím ssh nebo zadejte pokaždé.

Konkrétně můžete přidat řádek do sekce [client] souboru .my.cnf ve vašem domovském adresáři:

[client]
password=your_pass

Samozřejmě musíte zabránit tomu, aby byl tento soubor přístupný komukoli kromě vás, nastavením režimu přístupu k souboru na 400 nebo 600, např.

chmod 600 ~/.my.cnf

Pak můžete použít něco jako

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

kde user110971 je uživatelské jméno vašeho účtu.

Vynucení ssh k přidělení pseudo tty (ssh -t )

K tomuto problému dochází pokaždé, když odešlete příkaz přes ssh a musíte vložit vstup, protože ve výchozím nastavení je ssh nebude přidělovat pseudo-tty.

Alokaci tty můžete vynutit pomocí volby -t , (v případě potřeby i více než jeden):

-t

Vynutit alokaci pseudo-tty. Toho lze použít ke spouštění libovolných obrazovkových programů na vzdáleném počítači, což může být velmi užitečné, např. při zavádění služeb menu. Více -t volby vynutí alokaci tty, i když ssh nemá žádné místní tty.

Jak si můžete přečíst v tomto příspěvku pro Debian (Jul_11_2008) o sudo , je to starý problém, který se rád opakuje:

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

A zobrazí se vám heslo

Řešením je donutit ssh alokovat pseudo-tty s parametrem -t:

ssh -t [email protected] sudo ls

Poznámka:

Pokud se můžete spolehnout na to, že ponecháte heslo v souboru přístupném pouze vám a root na pracovním klienta.
Pokud je možné restartovat vzdálený počítač se změnou OS nebo odstranit HDD, nelze počítač považovat za zcela bezpečný... ale v takovém případě nebude zabezpečena samotná databáze.


Možnost připojení "hidepid" pro proc fs je také cenná. Tím se vaše příkazové řádky stanou neviditelnými v seznamu procesů pro ostatní uživatele. Příklad fstab:

proc /proc proc hidepid=1 0 0

Linux
  1. Předat výstup předchozího příkazu dalšímu jako argument?

  2. Co definuje maximální velikost pro jeden příkazový argument?

  3. Jak získat přístup k poslednímu argumentu komentovaného příkazu?

  1. Který příkaz umožňuje zobrazit skryté soubory v SSH?

  2. Jak používat příkaz ssh-keygen ke konfiguraci ssh bez hesla

  3. Co v linuxu znamenají všechny hodnoty v příkazu top?

  1. Příkaz pip install --upgrade pip, nainstalujte všechny verze pip

  2. Jak mohu zadat heslo SSH do SVN na příkazovém řádku?

  3. Proč příkaz Linux wall nevysílá argument řetězce?