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