Làm thế nào để SSH vào localhost mà không cần mật khẩu?


17

EDIT: Đưa chính xác những gì đã được thực hiện.

Tôi cần SSH để localhostkhông có mật khẩu, cách làm thông thường (với khóa công khai) không hoạt động.

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:~$ 

Vì vậy, như bạn có thể thấy trong lệnh cuối cùng, nó vẫn đang hỏi mật khẩu !!! Lam sao tôi co thể sửa no ?? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Thêm một số thông tin về 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'.

EDIT3: Kết quả đấu giá từ $ 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: 

EDIT4:

Chỉ cần kiểm tra xem các tệp có giống nhau không và md5sum có đồng ý không


Bạn có RSAAuthentication yesPubkeyAuthentication yestrong / etc / ssh / sshd_config không? Ssh -vv localhost hiển thị gì? Tôi mới thử cái này trên hộp 10.04 và không có vấn đề gì ..
Doon

Hy Doon, thực sự .. tôi có cả hai để có .. Tôi đã thêm đầu ra của ssh -vv trong câu hỏi.
Canesin

Tại sao bạn cần ssh vào localhost nếu bạn đã có quyền truy cập?
vtest

Phần mềm xử lý song song sử dụng ssh / rsh cục bộ
Canesin

Vui lòng không đăng câu trả lời trong câu hỏi hoặc đặt "GIẢI QUYẾT" trong tiêu đề. Bạn đã làm điều đúng bằng cách cung cấp một câu trả lời. Khi bạn đã chấp nhận câu trả lời, hệ thống sẽ chỉ ra rằng vấn đề đã được giải quyết.
ChrisF

Câu trả lời:


10

Trước hết, bạn nên hiểu những gì bạn đang làm:

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

Bạn đang sao chép khóa chung .ssh/id_rsa.pubthông qua ssh, vào cùng một máy chủ (đó là localhost là gì, cùng một máy chủ). Nếu bạn thay thế localhostbằng một số máy chủ khác, điều đó sẽ có ý nghĩa hơn (nhưng nếu bạn đang cố gắng điều này vì mục đích học cách làm, điều đó ổn).

Khi bạn có một bản sao khóa công khai của mình trên máy chủ từ xa (hoặc cùng một khóa bạn đang ở), bạn phải đảm bảo rằng bạn sử dụng nó để xác thực, trong máy chủ thực tế của bạn, gọi ssh-agent/ ssh-add:

$ eval `ssh-agent`
$ ssh-add

Sau đó, nếu bạn cung cấp cụm mật khẩu, bạn sẽ được yêu cầu nhập nó sau ssh-add. Nếu bạn đã tạo một khóa riêng mà không có cụm mật khẩu, thì đó là khóa đó.


Vâng, tôi hiểu các lệnh, tôi chỉ cần đặt theo cách đó để làm rõ rằng tôi đã làm những thứ thông thường với các phím. Tôi đã thực hiện ssh-add ... nó không hỏi cụm mật khẩu (vì tôi không sử dụng từ nào trong quá trình tạo) .. nhưng một lần nữa, khi thực hiện, $ ssh localhost ls, nó yêu cầu mật khẩu
Canesin

Vì vậy, nếu bạn đã thực hiện ssh-add, xin vui lòng chỉnh sửa câu hỏi của bạn và đặt mọi thứ bạn đã làm. Bạn càng cung cấp nhiều thông tin, câu trả lời càng hay và nhanh.
Torian

Xin lỗi vì điều đó, đã sửa ngay bây giờ .. Tôi đã thêm thiết bị đầu cuối, đã làm lại tất cả để dán ở đây ..
Canesin

Cảm ơn một triệu lần! BTW, tại sao " eval"?
IPropetFactory

3

Đã phát hiện ra vấn đề.

Chạy máy chủ với gỡ lỗi:

$sshd -Dd

Tôi thấy nó không thể đọc auth_key

$chmod 750 $HOME

Đã sửa nó.


Các cờ tập tin trước đó là gì?
bbaja42

2

Làm các bước sau

ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

Sử dụng tệp mặc định và cụm mật khẩu trống (Chỉ cần nhấn enter trong 2 bước tiếp theo)

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

Sao chép nội dung của ~ / .ssh / id_rsa.pub vào ~ / .ssh / ủy quyền

Đảm bảo sau đây là các quyền

 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 

Ngoài ra, đảm bảo quyền cho thư mục .ssh. Điều này cũng quan trọng

drwx------.   2 swati swati    4096 May  5 14:56 .ssh

1
Đảm bảo 750 quyền trên $ HOME
swatisinghi

Trên máy của tôi (Fedora 28), việc đặt quyền authorized_keyscho 0600 sẽ giải quyết vấn đề, trong khi quyền của .sshthư mục không có hiệu lực đối với sshing localhost
Chang Qian

1

Đơn giản hóa cấu hình máy chủ

Tôi nghĩ bạn có thể cần phải tắt xác thực dựa trên mật khẩu. Đây là một sshd_config tôi sử dụng

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

Trước tiên hãy thử một cái gì đó tối thiểu, sau đó thêm vào nó khi bạn cần thêm khả năng.


Cập nhật:

Kiểm tra nhật ký máy chủ

Từ EDIT3 của bạn, tôi thấy rằng xác thực khóa chung không thành công trước khi máy khách thử xác thực dựa trên mật khẩu. syslog của máy chủ của bạn có thể chứa một số tin nhắn từ sshd làm sáng tỏ điều này.

Tải lại cấu hình đã thay đổi

Nhớ tín hiệu sshdđể tải lại bất kỳ thay đổi cấu hình. Ví dụkill -HUP $(cat /etc/sshd.pid)


Tôi nghĩ rằng việc vô hiệu hóa xác thực mật khẩu khi anh ta thậm chí không thể vào mà không có mật khẩu sẽ là điều cuối cùng anh ta muốn làm (tự khóa hoàn toàn)
Amalgovinus

@Amalgovinus: Câu hỏi đã được chỉnh sửa rộng rãi kể từ khi tôi đăng câu trả lời ban đầu của mình. Tôi cho rằng tôi có thể xóa câu trả lời này.
RedGrittyBrick

0

Về bài viết trên, trong khi đối mặt với cùng một vấn đề, tôi chỉ thay đổi dòng

Mật khẩu xác thực không

trong tệp / etc / ssh / sshd_config và nó đã hoạt động.

Hơn nữa, có lẽ tốt hơn là sử dụng

dịch vụ sshd khởi động lại

để tải lại thay đổi cấu hình sshd.


0

Một giải pháp khác cho tính năng Red Hat Enterprise Linux 6.5 SELinux ngăn sshd đọc $ HOME / .ssh là sử dụng restorecon, xem phần trả lời của tôi tại đây /superuser//a/764020/213743 .



0

Tôi gặp vấn đề tương tự, tôi đã làm theo 3 bước để tạo mật khẩu ít đăng nhập và nó hoạt động tốt

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.