การเพิ่มพับลิกคีย์ไปที่ ~ / .ssh / authorized_keys ไม่ได้ล็อกอินฉันโดยอัตโนมัติ


446

ฉันเพิ่มคีย์ SSH สาธารณะให้กับไฟล์ authorized_keys ssh localhostควรลงชื่อเข้าใช้โดยไม่ต้องขอรหัสผ่าน

ฉันทำอย่างนั้นและลองพิมพ์ssh localhostแต่ก็ยังขอให้ฉันพิมพ์รหัสผ่าน มีการตั้งค่าอื่นที่ฉันต้องผ่านเพื่อให้ทำงานได้หรือไม่

ฉันได้ทำตามคำแนะนำในการเปลี่ยนการอนุญาต:

ssh -v localhostด้านล่างเป็นผลถ้าฉันทำ

debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>

จากนั้นจะขอข้อความรหัสผ่านหลังจากบันทึกด้านบน ทำไมมันไม่เข้าสู่ระบบโดยไม่มีรหัสผ่าน?


5
แม้ว่าจะไม่ใช่กรณีที่นี่หากคุณมาจาก Google และคุณกำลังใช้ไดเรกทอรีบ้านที่เข้ารหัสไว้ sshd จะไม่สามารถเข้าถึงได้และดังนั้นจะไม่สามารถอ่านไฟล์เอกสารที่ได้รับอนุญาตของคุณได้ นี่คือวิธีแก้ปัญหา: bugs.launchpad.net/ubuntu/+source/openssh/+bug/362427/comments/…
Daniel Schaffer

คำตอบ:


1097

คุณต้องตรวจสอบสิทธิ์ของauthorized_keysไฟล์และโฟลเดอร์ / โฟลเดอร์หลักที่ไฟล์นั้นอยู่

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

สำหรับข้อมูลเพิ่มเติมดูหน้านี้

คุณอาจต้องเปลี่ยน / ตรวจสอบสิทธิ์ของโฮมไดเร็กตอรี่ของคุณเพื่อลบสิทธิ์การเขียนสำหรับกลุ่มและอื่น ๆ

chmod go-w ~

6
มีบางอย่างในงานด้านบน แต่ไม่ "chmod -R go-wrx foobar" ค่อนข้างน่าทึ่งใช่ไหม ทำไมต้องมีการเรียกซ้ำ
joachim

9
สำหรับส่วนที่สองมันไม่จำเป็นที่จะทำให้มันวนซ้ำchmod go-wrx foobarได้ การทำซ้ำ ๆ อาจทำให้แอพพลิเคชั่นบางอย่างร้ายแรงหากคุณมีกลุ่มหรือการเข้าถึงไฟล์โดยเฉพาะอย่างยิ่งถ้าเป็นเว็บไดเร็กตอรี่
StingeyB

24
ดังที่กล่าวไว้ในคำถามที่พบบ่อยเกี่ยวกับ OpenSSH ไดเรกทอรี home & .ssh ของผู้ใช้จะต้องลบสิทธิ์การเขียนสำหรับกลุ่ม / อื่น ๆ (เช่นchmod go-w $HOME $HOME/.sshจะทำเคล็ดลับ) ดังนั้นการอนุญาตอาจเป็น 'เปิด' เป็น 755 สำหรับทั้งสองไดเรกทอรีหากคุณมีแนวโน้มมาก คำสั่งการบุกรุกที่ง่ายที่สุด / น้อยที่สุดอยู่ใน FAQ: openssh.org/faq.html#3.14
davidjb

3
ทำไมมันไม่ทำงานสำหรับฉันจนกว่าฉันจะทำchmod 700 ~/.ssh && chmod 644 ~/.ssh/authorized_keys? 600 ไม่ได้ทำงานที่ 644 ไม่ ...
ficuscr

3
ฉันต้องsudo chown -R {$USER}:{$USER} ~/.ssh/เพราะฉันเขียนauthorized_keysไฟล์เป็น root
Zane Hooper

155

SELinux ยังสามารถทำให้ authorized_keys ไม่ทำงาน โดยเฉพาะอย่างยิ่งสำหรับรูทใน CentOS 6 และ 7 ไม่จำเป็นต้องปิดการใช้งาน เมื่อคุณยืนยันสิทธิ์ของคุณถูกต้องแล้วคุณสามารถแก้ไขได้ดังนี้

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh

7
นี่restoreconคือสิ่งที่คุณต้องการหลังจากคัดลอกไฟล์ด้วยมือเช่นไปยังฮาร์ดไดรฟ์ใหม่ (คุณอาจจะทำงานบนไฟล์ทั้งหมดในกรณีนี้สามารถแก้ไขปัญหาแปลก ๆ ..)
ospalh

มีความสุขอีกคนออกค่ายที่นี่ นี่เป็นปัญหาของฉันใน RHEL 6.5
Antonio Ortells

2
9/10 ครั้งปัญหา "ทำไมจึงใช้งานไม่ได้มันทำงานได้เสมอ" คือปัญหา selinux
แอนดรูว์ไวท์

แก้ไขปัญหาสำหรับฉันในเซิร์ฟเวอร์ 1 และ 1 (1und1)
musicman

104

ตั้งค่าssh authorized_keysดูเหมือนจะง่าย แต่ซ่อนกับดักบางอย่างที่ฉันพยายามคิด

- เซิร์ฟเวอร์ -

ใน/ etc / ssh / sshd_configตั้งค่า passwordAuthentication yesเพื่อให้เซิร์ฟเวอร์ยอมรับการตรวจสอบรหัสผ่านชั่วคราว

- ลูกค้า -

พิจารณา cygwinเป็น linux emulation และติดตั้งและรัน openssh

1. สร้างคีย์ส่วนตัวและสาธารณะ (ฝั่งไคลเอ็นต์) # ssh-keygen

ที่นี่เพียงกด ENTER คุณจะได้รับ ไฟล์DEFAULT 2 " id_rsa " และ " id_rsa.pub " ใน~ / .ssh /แต่ถ้าคุณให้name_for_the_keyไฟล์ที่สร้างขึ้นจะถูกบันทึกไว้ในpwdของคุณ

2.วางyour_key.pubไปยังเครื่องเป้าหมายssh-copy-id user_name@host_name

หากคุณไม่ได้สร้างคีย์เริ่มต้นนี่เป็นขั้นตอนแรกที่ผิดพลาด ... คุณควรใช้

ssh-copy-id -i path/to/key_name.pub user_name@host_name

3.การบันทึกssh user_name@host_nameจะทำงานเฉพาะกับค่าเริ่มต้น id_rsa ดังนั้นนี่คือกับดักที่ 2 ที่คุณต้องการssh -i path/to/key_name user@host

(ใช้ssh -v ...ตัวเลือกเพื่อดูว่าเกิดอะไรขึ้น)

หากเซิร์ฟเวอร์ยังคงถามรหัสผ่านแสดงว่าคุณได้ให้ smth เพื่อป้อนวลีรหัสผ่าน:เมื่อคุณสร้างคีย์ (ดังนั้นจึงเป็นเรื่องปกติ)

ถ้า ssh ไม่ฟังพอร์ตดีฟอลต์ 22 ต้องใช้ ssh -p port_nr

- เซิร์ฟเวอร์ -----

4. แก้ไข / etc / ssh / sshd_configให้มี

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

(ไม่มีกรณีถ้ากรณี)

สิ่งนี้บอก ssh ให้ยอมรับ authorized_keys และค้นหาโฮมไดเร็กทอรีผู้ใช้สำหรับ key_name sting ที่เขียนในไฟล์. ssh / authorized_keys

5 ตั้งค่าการอนุญาตในเครื่องเป้าหมาย

chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

นอกจากนี้ยังปิดการตรวจสอบรหัสผ่าน

passwordAuthentication no

เพื่อปิดทางเข้าประตูไปยังทุกคนใน ssh root / admin /....@ your_domain พยายาม

6รับรองความเป็นเจ้าของและความเป็นเจ้าของกลุ่มของโฮมไดเร็กทอรีที่ไม่ใช่รูททั้งหมดที่เหมาะสม

chown -R ~ usernamehere
chgrp -R ~/.ssh/ user 

===============================================

7.พิจารณา excel ที่ http://www.fail2ban.org

8. Extra ssh TUNNELเพื่อเข้าถึง MySQL (ผูก = 127.0.0.1) ตัด


5
โปรดทราบว่า "การรักษาความปลอดภัยเพียง 4" ไม่ได้เป็นเพียงเพื่อความปลอดภัย! SSH จะเพิกเฉยต่อไฟล์หากไม่มีการ จำกัด สิทธิ์
Navin

มั่นใจว่าเจ้าของจะเป็นส่วนเสริมที่ดีในรายการนี้
steviejay

1
ฉันไม่รู้ssh-copy-idเลย! ขั้นตอนนั้นเพียงอย่างเดียวจะทำให้คำตอบที่ดี
James Marble

1
chmod 755 ~ / .ssh แทน 700 ที่ฉันเห็นที่อื่นดูเหมือนว่าจะทำมัน
Jim W พูดว่าคืนสถานะโมนิก้า

36

นอกจากนี้ต้องแน่ใจว่าคนอื่นไม่สามารถเขียนไดเรกทอรีบ้านของคุณได้

chmod g-w,o-w /home/USERNAME

คำตอบถูกขโมยจากที่นี่


4
การทำเช่นchmod 700 ~/.ssh ; chmod 600 ~/.ssh/authorized_keys ; chmod g-w,o-w ~ทำงานให้ฉัน ขอบคุณ
gbraad

1
ทำไมไม่ใช้เพียงchmod og-w /home/USERNAMEแทน
Paramvir Singh Karwal

13

ผู้หมดหวังอาจทำให้แน่ใจว่าพวกเขาไม่มีการขึ้นบรรทัดใหม่ในไฟล์ authorized_keys เนื่องจากการคัดลอกข้อความ id_rsa.pub จากเทอร์มินัลที่สับสน


2
นี่คือสิ่งที่เกิดขึ้นกับฉัน! เทอร์มินัลสองตัวมีความกว้างเท่ากันดังนั้นจึงยากที่จะคิดออกจนกว่าฉันจะเปิดหมายเลขบรรทัดเพื่อดูสองบรรทัดในไฟล์ authorized_keys
Shawn

1
นี้. ฉันเพิ่งเสียชั่วโมงเพราะเหตุนี้ และไม่ใช่ครั้งแรก @ คำตอบของ bortunac กล่าวถึงเครื่องมือ ssh-copy-id ซึ่งฉันจะใช้ในอนาคตเพื่อหลีกเลี่ยงปัญหานี้
xdhmoore

ฉันได้รับเนื้อหาของการid_rsa.pubใช้งานmoreแทนcatซึ่งเป็นอันตรายถึงชีวิตเนื่องจากการแพร่กระจายที่มองไม่เห็น
Dan Halbert

8

ผู้ใช้คือชื่อผู้ใช้ของคุณ

mkdir -p /home/user/.ssh
ssh-keygen -t rsa
touch /home/user/.ssh/authorized_keys
touch /home/user/.ssh/known_hosts
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/id*
chmod 644 /home/user/.ssh/id*.pub
chmod 644 /home/user/.ssh/authorized_keys
chmod 644 /home/user/.ssh/known_hosts

ดีกว่าสำหรับการรูต:mkdir -p /home/$USER/.ssh && chown -R $USER:$USER /home/$USER/.ssh && sudo -u $USER ssh-keygen -t rsa && touch /home/$USER/.ssh/authorized_keys && touch /home/$USER/.ssh/known_hosts && chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/id* && chmod 644 /home/$USER/.ssh/id*.pub && chmod 644 /home/$USER/.ssh/authorized_keys && chmod 644 /home/$USER/.ssh/known_hosts && vim /home/$USER/.ssh/authorized_keys # paste keys here!
Odysseus

7

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


คุณสามารถเห็นการแทรกแซงของ SELinux /var/log/audit/audit.logได้ restorecon -R -v /root/.sshแก้ไขกรณีเฉพาะของฉัน
Dave Goodell

7

การแสดงพับลิกคีย์ใน. ssh / authorized_keysเป็นสิ่งที่จำเป็น แต่ไม่เพียงพอสำหรับ sshd (เซิร์ฟเวอร์) ที่จะยอมรับ หากรหัสส่วนตัวของคุณได้รับการป้องกันข้อความรหัสผ่านคุณจะต้องให้รหัสผ่าน SSH (ลูกค้า) ทุกครั้ง หรือคุณสามารถใช้ssh-agentหรือเทียบเท่า GNOME

การติดตามที่อัปเดตของคุณนั้นสอดคล้องกับคีย์ส่วนตัวที่มีการป้องกันวลีรหัสผ่าน ดูตัวแทน ssh ssh-keygen -pหรือการใช้งาน


5

คำสั่งเขียน:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

หลังจากที่คุณทำเช่นนี้ตรวจสอบให้แน่ใจว่า dir ของคุณเป็นเช่นนั้น:

drwx------ 2 lab lab 4.0K Mar 13 08:33 .
drwx------ 8 lab lab 4.0K Mar 13 08:07 ..
-rw------- 1 lab lab  436 Mar 13 08:33 authorized_keys
-rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa
-rw-r--r-- 1 lab lab  413 Mar 13 07:35 id_rsa.pub

1
คำตอบของคุณแตกต่างกับคำตอบที่ยอมรับอย่างไร คุณเขียนมัน 3 ปีต่อมาโดยใช้คำสั่ง Ctrl + C Ctrl-V ของคุณ?
เหล็กที่

5

ในที่สุดสิ่งที่ทำเพื่อฉันในที่สุดก็เพื่อให้แน่ใจว่าเจ้าของ / กลุ่มไม่ได้เป็นผู้ใช้ แต่ผู้ใช้:

chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user 

chown: ผู้ใช้ที่ไม่ถูกต้อง: '/home/lsa/.ssh/'
Stepan Yakovenko


3

เคล็ดลับอีกข้อที่ควรจำ เนื่องจาก v7.0 OpenSSH จะปิดใช้งานคีย์ DSS / DSA ssh ตามค่าเริ่มต้นเนื่องจากความอ่อนแอที่สืบทอด ดังนั้นถ้าคุณมี OpenSSH v7.0 + ssh-dssให้แน่ใจว่าที่สำคัญของคุณไม่ได้

หากคุณติดอยู่กับคีย์ DSA คุณสามารถเปิดใช้งานการสนับสนุนในพื้นที่ได้อีกครั้งโดยการอัพเดตsshd_configและ~/.ssh/configไฟล์ของคุณด้วยบรรทัดดังนี้:PubkeyAcceptedKeyTypes=+ssh-dss


3

ในกรณีของฉันฉันต้องการที่จะใส่ของฉันแฟ้มในauthorized_keys.openssh

สถานที่แห่งนี้เป็นที่ที่ระบุไว้ในภายใต้ตัวเลือก/etc/ssh/sshd_configAuthorizedKeysFile %h/.ssh/authorized_keys


มีปัญหามากมายที่อาจเกิดขึ้นบนเซิร์ฟเวอร์ (เมื่อพยายามเชื่อมต่อจากไคลเอนต์) ที่เป็นไปไม่ได้ที่จะทำการดีบั๊กหากไม่สามารถเข้าถึงเซิร์ฟเวอร์ ... นี่คือการออกแบบเพื่อซ่อนข้อมูลจากไคลเอนต์ที่เป็นอันตราย แต่ทำให้ยากขึ้น การแก้ปัญหา
qneill

2

ตรวจสอบให้แน่ใจว่าผู้ใช้เป้าหมายมีการตั้งรหัสผ่าน เรียกใช้passwd usernameเพื่อตั้งค่าหนึ่ง สิ่งนี้จำเป็นสำหรับฉันแม้ว่ารหัสผ่าน SSH จะถูกปิดการใช้งาน


2

นี่เป็นการแก้ปัญหาของฉัน

ssh-agent ทุบตี

SSH เพิ่ม


โปรดอธิบายว่าทำอะไรได้บ้าง
lyuboslav kanev

ssh-agent เก็บคีย์ ssh ของคุณ .. คำสั่ง bash เริ่มต้นอินสแตนซ์ใหม่ของเชลล์ และ ssh-add ปลดล็อคกุญแจของคุณและโหลดมัน
Julian

2

ปัญหาอื่นที่คุณต้องดูแล หากไฟล์ที่คุณสร้างไม่ได้เป็นค่าเริ่มต้น id_rsa และ id_rsa.pub

คุณต้องสร้างไฟล์. ssh / config และกำหนดด้วยตนเองว่าไฟล์ id ใดที่คุณจะใช้กับการเชื่อมต่อ

ตัวอย่างอยู่ที่นี่:

host remote_host_name
hostname 172.xx.xx.xx
user my_user
IdentityFile /home/my_user/.ssh/my_user_custom.pub

2
IdentityFile ควรเป็นกุญแจส่วนตัว
Ken H

@KenH ใช่แน่นอน พิมพ์ผิดมันเป็น ขอโทษสำหรับสิ่งนั้น.
Kunthar

1

ฉันออกsudo chmod 700 ~/.sshและchmod 600 ~/.ssh/authorized_keysและchmod go-w $HOME $HOME/.sshจากด้านบนและมันคงปัญหาของฉันในกล่อง CentOS7 ที่ฉันได้ messed up สิทธิ์บนในขณะที่พยายามที่จะได้รับหุ้น samba ทำงาน ขอบคุณ


1

ดูเหมือนว่าปัญหาการอนุญาต มักจะเกิดขึ้นหากการอนุญาตของไฟล์ / ไดเร็กทอรีบางตัวไม่ได้ตั้งค่าอย่างถูกต้อง ในกรณีส่วนใหญ่พวกเขามีและ~/.ssh ~/.ssh/*ในกรณีของฉันพวกเขาเป็น/home/xxxในกรณีของพวกเขาเป็น

คุณสามารถเปลี่ยนระดับการบันทึกของ sshd โดยแก้ไข/etc/ssh/sshd_config(ค้นหาLogLevelตั้งค่าเป็นDEBUG) จากนั้นตรวจสอบผลลัพธ์/var/log/auth.logเพื่อดูว่าเกิดอะไรขึ้น


3
สิ่งนี้มีลักษณะเหมือนกับคำตอบที่ยอมรับอย่างมากและน่าจะเป็นความคิดเห็นไม่ใช่คำตอบ กับบิตตัวแทนมากขึ้นคุณจะสามารถที่จะแสดงความคิดเห็น โปรดอย่าใช้คำตอบเป็นวิธีแก้ปัญหาก่อนหน้านั้น
นาธาน Tuggy

ขออภัยฉันคิดว่ามันเป็นวิธีที่จะแก้ปัญหานี้ได้ทุกคำถาม ตอนนี้ฉันรู้วิธีที่จะทำตอนนี้ขอบคุณ
Joey

1

ปัญหาของฉันคือการแก้ไข AuthorizedKeysFile เมื่อระบบอัตโนมัติเพื่อเติม / etc / ssh / authorized_keys ยังไม่ได้ทำงาน

$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

1

เพียงแค่มองใน/var/log/auth.logบนเซิร์ฟเวอร์ การตั้งค่าคำฟุ่มเฟื่อยเพิ่มเติมด้วย-vvที่ฝั่งไคลเอ็นต์จะไม่ช่วยเพราะเซิร์ฟเวอร์ไม่น่าจะให้ข้อมูลมากเกินไปแก่ผู้โจมตีที่เป็นไปได้


1

ตรวจสอบให้แน่ใจว่าคุณได้คัดลอกกุญแจสาธารณะทั้งหมดไปที่authorized_keys; ssh rsaคำนำหน้าเป็นสิ่งจำเป็นสำหรับกุญแจสำคัญในการทำงาน


2
ใช้ ssh-copy-id
vishnu

1

คุณต้องตรวจสอบคุณสมบัติของไฟล์ เพื่อกำหนดการใช้งานคุณสมบัติที่ต้องการ:

$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub

1

ดูที่/var/log/auth.logเซิร์ฟเวอร์สำหรับsshdข้อผิดพลาดการรับรองความถูกต้อง

ถ้าอื่นทั้งหมดล้มเหลวให้รันsshdเซิร์ฟเวอร์ในโหมดดีบัก:

sudo /usr/sbin/sshd -ddd -p 2200

จากนั้นเชื่อมต่อจากไคลเอนต์:

ssh user@host -p 2200

ในกรณีของฉันฉันพบส่วนข้อผิดพลาดในตอนท้าย:

    debug1: userauth_pubkey: test whether pkalg/pkblob are acceptable for RSA SHA256:6bL+waAtghY5BOaY9i+pIX9wHJHvY4r/mOh2YaL9RvQ [preauth]
==> debug2: userauth_pubkey: disabled because of invalid user [preauth]
    debug2: userauth_pubkey: authenticated 0 pkalg ssh-rsa [preauth]
    debug3: userauth_finish: failure partial=0 next methods="publickey,password" [preauth]
    debug3: send packet: type 51 [preauth]
    debug3: receive packet: type 50 [preauth]

ด้วยข้อมูลนี้ฉันรู้ว่าฉันsshd_configกำลัง จำกัด การเข้าสู่ระบบสมาชิกของsshกลุ่ม คำสั่งต่อไปนี้แก้ไขข้อผิดพลาดการอนุญาตนี้:

sudo usermod -a -G ssh NEW_USER

0

ในบันทึกย่อนั้นตรวจสอบให้แน่ใจว่าคุณมี sshd config -;

PermitRootLogin without-password

ตั้งเป็นข้างต้นแล้วรีสตาร์ท sshd (/etc/init.d/sshd restart)

ออกจากระบบและลองลงชื่อเข้าใช้อีกครั้ง!

ฉันเชื่อว่าเป็นค่าเริ่มต้น -;

PermitRootLogin no

0

ในกรณีของฉันมันเป็นเพราะกลุ่มผู้ใช้ไม่ได้ตั้งใน AllowGroups ของไฟล์ config / etc / ssh / sshd_config หลังจากเพิ่มทุกอย่างทำงานได้ดี


0

ฉันมีโฮมไดเรกทอรีในสถานที่ที่ไม่ได้มาตรฐานและในsshdบันทึกฉันมีบรรทัดนี้:

Could not open authorized keys '/data/home/user1/.ssh/authorized_keys': Permission denied

แม้ว่าการอนุญาตทั้งหมดจะใช้ได้ (ดูคำตอบอื่น ๆ )

ฉันได้พบวิธีแก้ปัญหาที่นี่: http://arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069ec2aa5fdcd691a2e2e7e2247c2#p25813191

ในกรณีของฉันโดยเฉพาะ:

  • เพิ่มบรรทัดใหม่ใน/etc/selinux/targeted/contexts/files/file_contexts.homedirs:

    • นี่คือบรรทัดต้นฉบับสำหรับโฮมไดเรกทอรีปกติ:

      /home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

    • นี่คือบรรทัดใหม่ของฉัน:

      /data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • ตามด้วย a restorecon -r /data/และการsshdรีสตาร์ท


0

ฉันมีปัญหานี้และไม่มีคำตอบอื่นใดแก้ไขได้ แต่แน่นอนว่าคำตอบอื่น ๆนั้นถูกต้อง

ในกรณีของฉันกลับกลายเป็นว่า/rootไดเรกทอรีตัวเอง (ไม่เช่น/root/.ssh) มีสิทธิ์ที่ไม่ถูกต้อง ฉันต้องการ:

chown root.root /root
chmod 700 /root

แน่นอนว่าการอนุญาตเหล่านั้นควรเป็นแบบนั้น (อาจchmod 770) โดยไม่คำนึงถึง อย่างไรก็ตามมันป้องกันโดยเฉพาะsshdจากการทำงานแม้ว่า/root/.sshและ/root/.ssh/authorized_keysทั้งคู่จะมีสิทธิ์และเจ้าของที่ถูกต้อง


0

ฉันมีปัญหานี้เมื่อฉันเพิ่มกลุ่มผู้ใช้เข้าสู่ระบบให้กับผู้ใช้อื่น สมมติว่ามีผู้ใช้ ssh-login ชื่อ userA และผู้ใช้ที่ไม่ใช่ ssh-login userB userA มีกลุ่ม userA เช่นกัน ฉันปรับเปลี่ยน userB ให้มีกลุ่ม userA เช่นกัน นำไปสู่พฤติกรรมที่อธิบายไว้เพื่อให้ userA ไม่สามารถเข้าสู่ระบบได้โดยไม่ต้องแจ้งให้ หลังจากฉันลบกลุ่ม userA ออกจาก userB แล้วการล็อกอินโดยไม่แจ้งให้ทำงานอีกครั้ง

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