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 example@unixlinux.online '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 example@unixlinux.online '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):
-tVynutit 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
-tvolby 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 example@unixlinux.online "sudo ls" password: passwordA zobrazí se vám heslo
Řešením je donutit ssh alokovat pseudo-tty s parametrem -t:
ssh -t example@unixlinux.online 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