Jak SSH do localhost bez hasła?

17

EDYCJA: Umieszczenie dokładnie tego, co zostało zrobione.

Potrzebuję SSH do localhostbez hasła, zwykły sposób robienia tego (z kluczami publicznymi) nie działa.

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh-agent $SHELL
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

Jak widać w ostatnim poleceniu, wciąż prosi o hasło !!! Jak mogę to naprawić? Ubuntu-10.04, OpenSSH_5.3p1

EDYCJA 2:

Dodanie informacji o sshd

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDYCJA 3: Wynik reklamy z $ ssh -vv localhost

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password: 

EDYCJA 4:

Sprawdzam tylko, czy pliki są takie same i md5sum się zgadza

Canesin
źródło
Czy masz RSAAuthentication yesi PubkeyAuthentication yesw pliku / etc / ssh / sshd_config? Co pokazuje ssh -vv localhost? Właśnie próbowałem tego na pudełku 10.04 i nie miałem problemu ..
Doon
Hy Doon, w rzeczy samej .. Mam oba do tak .. Dodałem wynik ssh -vv w pytaniu.
Canesin
Dlaczego musisz ssh do localhost, jeśli masz już dostęp?
vtest
Oprogramowanie do przetwarzania równoległego korzysta z lokalnego ssh / rsh
Canesin,
Proszę nie zamieszczać odpowiedzi w pytaniu ani nie umieszczać „SOLVED” w tytule. Zrobiłeś dobrze, udzielając odpowiedzi. Po zaakceptowaniu odpowiedzi system pokaże, że problem został rozwiązany.
ChrisF,

Odpowiedzi:

10

Przede wszystkim powinieneś zrozumieć, co robisz:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

Kopiujesz klucz publiczny .ssh/id_rsa.pubprzez ssh, do tego samego hosta (taki jest localhost, ten sam host). Jeśli zastąpisz localhostgo innym hostem, miałoby to większy sens (ale jeśli próbujesz tego zrobić, aby dowiedzieć się, jak to zrobić, to jest w porządku).

Gdy masz już kopię swojego klucza publicznego na zdalnym hoście (lub tym samym, w którym się znajdujesz), musisz upewnić się, że używasz go do uwierzytelnienia, na swoim hoście, dzwoniąc ssh-agent/ ssh-add:

$ eval `ssh-agent`
$ ssh-add

Następnie, jeśli podałeś hasło, zostaniesz poproszony o ich wprowadzenie ssh-add. Jeśli wygenerowałeś klucz prywatny bez hasła, to wszystko.

Torian
źródło
Tak, rozumiem polecenia, po prostu ułożyłem to w ten sposób, aby wyjaśnić, że zrobiłem zwykłe rzeczy za pomocą klawiszy. Zrobiłem ssh-add ... nie pyta o hasło (ponieważ nie użyłem żadnego w tworzeniu) .. ale znowu, robiąc, $ ssh localhost ls, prosi o hasło
Canesin
Więc jeśli wykonałeś ssh-add, edytuj swoje pytanie i umieść wszystko, co zrobiłeś. Im więcej informacji podasz, tym lepsza i szybsza odpowiedź.
Torian
Przepraszam za to, naprawione teraz .. Dodałem terminal, zrobiłem wszystko ponownie, aby wkleić tutaj ..
Canesin
Dzięki milion razy! BTW, dlaczego „ eval”?
IProblemFactory
3

Odkryłem problem.

Uruchamianie serwera z debugowaniem:

$sshd -Dd

Odkryłem, że nie można odczytać klucza auth_key

$chmod 750 $HOME

Naprawione.

Canesin
źródło
Jakie były poprzednie flagi plików?
bbaja42,
2

Wykonaj następujące kroki

ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

Użyj domyślnego pliku i pustego hasła (po prostu naciśnij enter w kolejnych 2 krokach)

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add 

Skopiuj zawartość ~ / .ssh / id_rsa.pub do ~ / .ssh / Author_keys

Upewnij się, że są to uprawnienia

 ls -l .ssh/
 total 20
-rw-r--r--. 1 swati swati  399 May  5 14:53 authorized_keys
-rw-r--r--. 1 swati swati  761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati  399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati  410 Jan 12 15:46 known_hosts 

Upewnij się również, że uprawnienia do katalogu .ssh to. To jest również ważne

drwx------.   2 swati swati    4096 May  5 14:56 .ssh
swatisinghi
źródło
1
Zapewnij 750 uprawnień w $ HOME
swatisinghi
Na moim komputerze (Fedora 28) ustawienie uprawnienia authorized_keysna 0600 rozwiązuje problem, podczas gdy pozwolenie na .sshkatalog nie ma wpływu na sshing localhost
Chang Qian
1

Uprość konfigurację serwera

Myślę, że może być konieczne wyłączenie uwierzytelniania opartego na haśle. To jest sshd_config, którego używam

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

Spróbuj najpierw czegoś minimalnego, a następnie dodaj go, ponieważ potrzebujesz dodatkowych możliwości.


Aktualizacja:

Sprawdź dzienniki serwera

Z twojego EDIT3 widzę, że uwierzytelnienie klucza publicznego kończy się niepowodzeniem, zanim klient podejmie próbę uwierzytelnienia opartego na haśle. syslog twojego serwera może zawierać pewne wiadomości od sshd, które rzucają na to trochę światła.

Przeładuj zmienione konfiguracje

Pamiętaj, aby zasygnalizować sshdprzeładowanie wszelkich zmian konfiguracji. Na przykładkill -HUP $(cat /etc/sshd.pid)

RedGrittyBrick
źródło
Myślę, że wyłączenie uwierzytelniania hasła, gdy nie może nawet wejść bez hasła, byłoby ostatnią rzeczą, którą chce zrobić (całkowicie się zablokować)
Amalgovinus
@Amalgovinus: Pytanie zostało obszernie zredagowane, odkąd opublikowałem pierwszą odpowiedź. Myślę, że mógłbym usunąć tę odpowiedź.
RedGrittyBrick
0

Jeśli chodzi o powyższy post, w obliczu tego samego problemu, właśnie zmieniłem linię

Hasło Numer uwierzytelnienia

w pliku / etc / ssh / sshd_config i działało.

Co więcej, być może lepiej jest użyć

usługa sshd restart

aby ponownie załadować zmiany w konfiguracji sshd.

Nicolas
źródło
0

Innym rozwiązaniem dla funkcji Red Hat Enterprise Linux 6.5 SELinux, uniemożliwiającej sshd odczytanie $ HOME / .ssh, jest skorzystanie z restorecon, zobacz moją odpowiedź tutaj /superuser//a/764020/213743 .

buzz3791
źródło
0

Dla mnie było to tak proste jak

cat id_rsa.pub >> authorized_keys
użytkownik695025
źródło
0

Miałem ten sam problem, wykonałem 3 kroki, aby utworzyć hasło bez logowania i działa dobrze

1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys
Hadi Rahjoo
źródło