Chcę połączyć się z moim ssh za pomocą tego polecenia:
ssh host @ myhost ls -l /
ale chcę wprowadzić moje hasło w powyższym poleceniu, czy to możliwe? na przykład nasze polecenie jest takie:
ssh host @ myhost mypassword ls -l /
źródło
Chcę połączyć się z moim ssh za pomocą tego polecenia:
ssh host @ myhost ls -l /
ale chcę wprowadzić moje hasło w powyższym poleceniu, czy to możliwe? na przykład nasze polecenie jest takie:
ssh host @ myhost mypassword ls -l /
Aby korzystać z SSH bez haseł, musisz skonfigurować klucze do użycia w systemie i systemie docelowym.
[yoursystem] $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/youruser/.ssh/id_rsa.
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub.
The key fingerprint is:
f0:7e:55:93:06:b6:c5:6f:68:67:d5:04:7f:2f:ef:df youruser@yoursystem
Następnie prześlij plik id_rsa.pub do systemu docelowego.
W systemie docelowym dodaj klucz publiczny do listy autoryzowanych kluczy:
cat id_rsa.pub >> ~/.ssh/authorized_keys
Wyloguj.
Jeśli pozostawiłeś hasło na kluczu puste, możesz teraz uruchomić polecenie bez konieczności podawania hasła (klucze: klucz prywatny id_rsa
w twoim systemie i klucz publiczny id_rsa.pub
będzie odpowiedzialny za uwierzytelnienie).
Jeśli utworzyłeś hasło dla swojego klucza prywatnego (zalecane), musisz uruchomić ssh-agent
aby zachować dla Ciebie hasła w pamięci:
[yoursystem] $ eval `ssh-agent`
Agent pid 1231
[yoursystem] $ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/youruser/.ssh/id_rsa:
Identity added: /home/youruser/.ssh/id_rsa (/home/youruser/.ssh/id_rsa)
Następnie ssh-agent będzie odpowiedzialny za podanie hasła, gdy używasz klucza prywatnego (i co ważne, klucz prywatny jest chroniony hasłem, a hasło nie jest przechowywane w pliku).
Spróbuj użyć kluczy ssh do uwierzytelnienia. Zobacz man ssh-keygen. To jest bezpieczniejszy sposób.
Posługiwać się:
"-o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=0 -o ConnectTimeout=30 -o ServerAliveInterval=15"
wyłączyć interaktywność.
Nie możesz tego zrobić, ponieważ wtedy hasło będzie widoczne dla każdego użytkownika w twoim systemie, ponieważ polecenie z jego argumentami jest widoczne na przykład na ps aux.
Jeśli potrzebujesz hosta A do ssh do hosta B bez interwencji człowieka, użyj kluczy pubkeys. Umieść klucz publiczny hosta A na hoście B i odwrotnie, a następnie będą mogli łączyć się ze sobą bez hasła.
źródło
Możesz to zrobić za pomocą oczekiwania
oczekiwać - programowany dialog z interaktywnymi programami (program narzędziowy).
ale musisz zrobić skrypt do tego
Musisz się spodziewać zainstalowanego w systemie.
Oczywiście ta metoda pozostawia kontrole bezpieczeństwa (czasami konieczne, gdy istnieje niebezpieczeństwo zmiany tożsamości hosta).
źródło
Możesz także użyć trochę oprogramowania o nazwie sshpass . Wyświetla Twoje hasło dla każdego w systemie, ale nie ma kluczy, nie spodziewaj się i jest stosunkowo prosty w konfiguracji. Powinieneś prawdopodobnie dojść do punktu, w którym masz klucze, ale nie zawsze jest to możliwe.
źródło