Jeśli uruchomię to:
ssh user@server 'mysql -u user -p'
Gdy poprosi mnie o hasło MySQL i zacznę pisać, hasło jest widoczne na ekranie. Jak mogę temu zapobiec? Jeśli zaloguję się, ssha następnie wykonam polecenie MySQL, wszystko działa poprawnie.
Jeśli uruchomię to:
ssh user@server 'mysql -u user -p'
Gdy poprosi mnie o hasło MySQL i zacznę pisać, hasło jest widoczne na ekranie. Jak mogę temu zapobiec? Jeśli zaloguję się, ssha następnie wykonam polecenie MySQL, wszystko działa poprawnie.
Odpowiedzi:
Jeśli podasz zdalne polecenie do uruchomienia, SSH nie przydzieli tty, więc zdalne polecenie nie może wyłączyć echa. Możesz zmusić SSH do udostępnienia tty za pomocą -topcji:
ssh -t user@server 'mysql -u user -p'
Odpowiednią opcją (dla -olub dla pliku konfiguracyjnego) jest RequestTTY. Przestrzegałbym przed użyciem go w konfiguracji, ponieważ może mieć niepożądane skutki dla poleceń nieinteraktywnych .
RequestTTYw man 5 ssh_config.
Jeśli możesz zaufać bezpieczeństwu komputera zdalnego [*] , możesz przechowywać hasło w odpowiednio chronionym pliku opcji, zgodnie z sugestią zawartą w rozdziale Wskazówki dla użytkownika końcowego dotyczące bezpieczeństwa hasła , bez potrzeby komunikowania się sshlub wpisywania każdego z nich czas.
W szczególności możesz dodać wiersz w sekcji [klient] pliku .my.cnfw katalogu domowym:
[client]
password=your_pass
Oczywiście musisz uniemożliwić dostęp do tego pliku każdemu poza tobą, ustawiając tryb dostępu do pliku na 400 lub 600 za pomocą np.
chmod 600 ~/.my.cnf
Następnie możesz użyć czegoś takiego
ssh user@server 'mysql -u user110971 --defaults-file=/home/user110971/mysql-opts'
gdzie user110971jest nazwa użytkownika twojego konta.
ssh -t)Ten problem występuje za każdym razem, gdy wysyłasz komendę sshi musisz wstawić dane wejściowe, ponieważ domyślnie sshnie przydzielisz pseudo-tty.
Możesz wymusić alokację tty z opcją -t(w razie potrzeby nawet więcej niż jedną):
-tWymuś alokację pseudotty. Można to wykorzystać do wykonania dowolnych programów ekranowych na zdalnym komputerze, co może być bardzo przydatne, np. Przy wdrażaniu usług menu. Wiele
-topcji wymusza alokację tty, nawet jeśli ssh nie ma lokalnego tty.
Jak można przeczytać w tym poście Debiana (Jul_11_2008) o sudo, jest to stary problem, który kocha się powtarzać:
ssh user@server "sudo ls" password: passwordI hasło zostanie wyświetlone
Rozwiązaniem jest zmuszenie ssh do przydzielenia pseudo-tty z flagą -t:
ssh -t user@server sudo ls
[*] Jeśli możesz polegać na pozostawieniu hasła w pliku dostępnym tylko dla Ciebie i rootowaniu na działającym kliencie.
Jeśli można zrestartować komputer zdalny, zmieniając system operacyjny lub usunąć dysk twardy, komputera nie można uznać za całkowicie bezpieczny ... ale w takim przypadku sama baza danych nie będzie bezpieczna.