วิธี SSH ไปยัง localhost ไม่มีรหัสผ่าน?


17

แก้ไข: ใส่สิ่งที่ทำ

ฉันต้อง SSH localhostโดยไม่มีรหัสผ่านวิธีปกติในการทำ (ด้วยรหัสสาธารณะ) ไม่ทำงาน

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

ดังนั้นอย่างที่คุณเห็นในคำสั่งสุดท้ายมันยังคงถามรหัสผ่าน !!! ฉันจะแก้ไขได้อย่างไร ?? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

การเพิ่มข้อมูลบางอย่างเกี่ยวกับ 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: ผลการโฆษณาจาก $ 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:

เพียงตรวจสอบว่าไฟล์เหมือนกันและ md5sum เห็นด้วย


คุณมีRSAAuthentication yesและPubkeyAuthentication yes/ etc / ssh / sshd_config ของคุณหรือไม่? ssh -vv localhost แสดงอะไร ฉันก็พยายามนี้ใน 10.04 กล่องและไม่มีปัญหา ..
ล่าง

Hy Doon แน่นอน .. ฉันต้องใช่ทั้งสองคน .. ฉันได้เพิ่มเอาท์พุตของ ssh -vv ในคำถาม
Canesin

ทำไมคุณต้อง ssh ไปยัง localhost ถ้าคุณมีสิทธิ์เข้าถึงอยู่แล้ว?
vtest

โปรแกรมประมวลผลแบบขนานใช้ local ssh / rsh
Canesin

กรุณาอย่าโพสต์คำตอบในคำถามหรือใส่ "แก้ไข" ในชื่อ คุณทำสิ่งที่ถูกต้องโดยให้คำตอบ เมื่อคุณยอมรับคำตอบแล้วระบบจะแสดงว่าปัญหาได้รับการแก้ไขแล้ว
ChrisF

คำตอบ:


10

ก่อนอื่นคุณควรเข้าใจสิ่งที่คุณทำ:

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

คุณกำลังคัดลอกกุญแจสาธารณะ.ssh/id_rsa.pubผ่าน ssh ไปยังโฮสต์เดียวกัน (นั่นคือสิ่งที่ localhost คือโฮสต์เดียวกัน) หากคุณแทนที่localhostด้วยโฮสต์อื่น ๆ นั่นจะสมเหตุสมผลมากกว่า (แต่ถ้าคุณพยายามทำสิ่งนี้เพื่อเรียนรู้วิธีการทำ

เมื่อคุณมีสำเนาของกุญแจสาธารณะของคุณบนรีโมตโฮสต์ (หรืออันเดียวกับที่คุณอยู่) คุณต้องตรวจสอบให้แน่ใจว่าคุณใช้มันสำหรับการรับรองความถูกต้องในโฮสต์จริงของคุณโทรssh-agent/ ssh-add:

$ eval `ssh-agent`
$ ssh-add

จากนั้นหากคุณระบุข้อความรหัสผ่านคุณจะต้องป้อนหลังจากssh-addนั้น หากคุณสร้างรหัสส่วนตัวโดยไม่มีข้อความรหัสผ่านแสดงว่าเป็นรหัสนั้น


ใช่ฉันเข้าใจคำสั่งฉันใช้วิธีนั้นเพื่อให้ชัดเจนว่าฉันทำสิ่งต่าง ๆ ตามปกติด้วยปุ่ม ฉันทำ ssh-add ... มันไม่ถามวลีรหัสผ่าน (เพราะฉันไม่ได้ใช้ในการสร้าง) .. แต่อีกครั้งทำ $ ssh localhost ls มันถามรหัสผ่าน
Canesin

ดังนั้นหากคุณดำเนินการssh-addแล้วโปรดแก้ไขคำถามและใส่ทุกอย่างที่คุณทำ ยิ่งคุณให้ข้อมูลมากเท่าไหร่คำตอบก็จะยิ่งดีและรวดเร็วเท่านั้น
Torian

ขออภัยที่ตอนนี้คง .. ฉันเพิ่มขั้วได้ทั้งหมดอีกครั้งเพื่อวางนี่ ..
Canesin

ขอบคุณล้านครั้ง! BTW ทำไม " eval"
IProblemFactory

3

ได้ค้นพบปัญหา

การรันเซิร์ฟเวอร์ด้วยการดีบัก:

$sshd -Dd

ฉันพบว่ามันไม่สามารถอ่าน auth_key

$chmod 750 $HOME

ซ่อมมัน.


แฟล็กไฟล์ก่อนหน้านี้คืออะไร
bbaja42

2

ทำตามขั้นตอนต่อไปนี้

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.

ใช้ไฟล์เริ่มต้นและวลีรหัสผ่านที่ว่างเปล่า (เพียงกด Enter ใน 2 ขั้นตอนถัดไป)

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

คัดลอกเนื้อหาของ ~ / .ssh / id_rsa.pub ไปที่ ~ / .ssh / authorized_keys

ตรวจสอบให้แน่ใจต่อไปนี้คือการอนุญาต

 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 

ตรวจสอบให้แน่ใจว่าสิทธิ์สำหรับไดเรกทอรี. ssh คือ สิ่งนี้ก็สำคัญเช่นกัน

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

1
ตรวจสอบให้แน่ใจ 750 สิทธิ์ใน $ HOME
swatisinghi

ในเครื่องของฉัน (Fedora 28) การตั้งค่าการอนุญาตauthorized_keysถึง 0600 แก้ไขปัญหาในขณะที่การอนุญาตของ.sshไดเรกทอรีไม่มีผลต่อ sshing localhost
Chang Qian

1

ทำให้การกำหนดค่าเซิร์ฟเวอร์ง่ายขึ้น

ฉันคิดว่าคุณอาจต้องปิดการใช้งานการตรวจสอบตามรหัสผ่าน นี่คือ sshd_config ที่ฉันใช้

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

ลองใช้สิ่งที่น้อยที่สุดก่อนแล้วเพิ่มไปตามที่คุณต้องการความสามารถพิเศษ


ปรับปรุง:

ตรวจสอบบันทึกเซิร์ฟเวอร์

จาก EDIT3 ของคุณฉันเห็นว่าการรับรองความถูกต้องของรหัสสาธารณะล้มเหลวก่อนที่ลูกค้าจะพยายามตรวจสอบด้วยรหัสผ่าน syslog ของเซิร์ฟเวอร์ของคุณอาจมีข้อความบางส่วนจาก sshd ที่ทำให้เกิดปัญหาในเรื่องนี้

โหลดการกำหนดค่าที่โหลดซ้ำ

อย่าลืมส่งสัญญาณsshdเพื่อโหลดการเปลี่ยนแปลงการตั้งค่าใด ๆ เช่นkill -HUP $(cat /etc/sshd.pid)


ฉันคิดว่าการปิดใช้งานการรับรองความถูกต้องของรหัสผ่านเมื่อเขาไม่สามารถแม้แต่จะรับได้โดยไม่ต้องใช้รหัสผ่านจะเป็นสิ่งสุดท้ายที่เขาต้องการ (ล็อคตัวเองออกอย่างสมบูรณ์)
Amalgovinus

@Amalgovinus: คำถามนี้ได้รับการแก้ไขอย่างกว้างขวางตั้งแต่ฉันโพสต์คำตอบแรกของฉัน ฉันคิดว่าฉันสามารถลบคำตอบนี้ได้
RedGrittyBrick

0

เกี่ยวกับการโพสต์ข้างต้นในขณะที่ประสบปัญหาเดียวกันฉันเพิ่งเปลี่ยนสาย

รหัสผ่านการตรวจสอบหมายเลข

ในไฟล์ / etc / ssh / sshd_config และใช้งานได้

ยิ่งกว่านั้นบางทีมันอาจจะดีกว่าที่จะใช้

บริการ sshd รีสตาร์ท

เพื่อโหลดการเปลี่ยนแปลงการกำหนดค่า sshd ใหม่


0

วิธีแก้ปัญหาสำหรับ Red Hat Enterprise Linux 6.5 คุณลักษณะ SELinux ป้องกัน sshd จากการอ่าน $ HOME / .ssh หนึ่งคือการใช้ restorecon ดู answser ของฉันที่นี่/superuser//a/764020/213743



0

ฉันมีปัญหาเดียวกันฉันทำตาม 3 ขั้นตอนเพื่อสร้างรหัสผ่านให้น้อยลงและใช้งานได้ดี

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.