Używanie SSH w poleceniu Linux

1

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 /

studiohack
źródło

Odpowiedzi:

3

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).


źródło
3

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ść.

lollo
źródło
na koniec, jakie jest polecenie? proszę pomóż mi
1
@Jessica Watson, nie ma polecenia „jeden”, naucz się narzędzia ssh, przeczytaj dokumentację i samouczki dotyczące ssh, to o wiele więcej niż tylko „wprowadź to” „otrzymaj to”, to coś, co zmieniasz w to, co chcesz zrozumieć, jak to działa.
ummm ... widzę, nie ma polecenia, aby połączyć się bezpośrednio z ssh. Dzięki
0

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.

rapadura
źródło
0

Możesz to zrobić za pomocą oczekiwania
oczekiwać - programowany dialog z interaktywnymi programami (program narzędziowy).
ale musisz zrobić skrypt do tego

#!/usr/bin/expect -f
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no USERNAME@HOSTNAME
expect "*password*"
send "$PASSWORD\r"
expect eof

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).

Peeyush
źródło
0

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.

Greg Cain
źródło