ตรวจสอบการกำหนดค่า sshd


19

ฉันจะตรวจสอบการกำหนดค่าได้sshdอย่างไร

ตัวอย่างเช่นฉันต้องการตรวจสอบให้แน่ใจว่าการตั้งค่าเหล่านี้ถูกตั้งค่าและนำไปใช้:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

เป็นวิธีเดียวในการตรวจสอบเนื้อหาของไฟล์ด้วยตนเองsshd_configหรือฉันสามารถสอบสวนsshdเพื่อให้แน่ใจได้หรือไม่


2
คุณหมายถึงอะไรโดยการยืนยัน? คุณกำลังถามว่าจะแน่ใจได้อย่างไรว่าการเปลี่ยนแปลงการตั้งค่าที่คุณทำนั้นถูกต้อง? คุณกำลังถามว่ามีเครื่องมือบางอย่างเช่นผ้าสำลีที่จะตรวจสอบการกำหนดค่าที่ถูกต้องหรือไม่?
Zoredache

2
ฉันไม่คิดว่าคำถามนั้นไม่ชัดเจน: มีอยู่จริงไม่มีวิธีตรวจสอบค่าสำหรับตัวเลือกการกำหนดค่า หากคุณเห็น#UseLogin noไฟล์ ssd_config ของคุณแสดงว่า UseLogin คือใช่หรือ UseLogin ไม่ใช่ คุณต้องอ้างอิงคู่มือเพื่อค้นหาค่าเริ่มต้นซึ่งสามารถเปลี่ยนแปลงได้ในระหว่างการรวบรวม จนถึงตอนนี้จากคำถามที่ไร้ประโยชน์ ...
Xorax

คำตอบ:


27

มีโหมดการทดสอบเพิ่มเติมที่เรียกใช้พร้อมกับตัวเลือกบรรทัดคำสั่ง-Tซึ่งทำสิ่งนี้ ตัวอย่างเช่น:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

ตัวเลือกนี้มีอยู่ใน Portable OpenSSH ตั้งแต่ปี 2008, cf กระทำ e7140f2 สิ่งนี้ได้รับการปล่อยตัวด้วย 5.1p1 ทำในเดือนกรกฎาคม 2008, cf. บันทึกประจำรุ่นสำหรับ 5.1ดังนั้นจึงมีอยู่ในการติดตั้งเซิร์ฟเวอร์ OpenSSH ทั้งหมดที่รองรับในปัจจุบัน


3
โปรดทราบว่านี่จะแสดงการตั้งค่าเริ่มต้น + การตั้งค่าจาก/etc/ssh/sshd_configไฟล์ การตั้งค่าจากไฟล์อาจยังไม่สามารถใช้งานได้จริงจนกว่าจะsshdมีการโหลดซ้ำกับสิ่งที่คล้ายกัน/etc/init.d/ssh reloadหรือเทียบเท่าในระบบของคุณ
mivk

2
@mkk จุดที่ดี แต่มันค่อนข้างธรรมดาสำหรับหลักสูตรเพราะมันเป็นเรื่องปกติที่เราจะใช้คำสั่งประเภทนี้อย่างแน่นอนหลังจากทำการเปลี่ยนแปลง แต่ก่อนที่จะนำไปใช้จริงพวกเราต้องการตรวจสอบว่าจะเกิดอะไรขึ้น ตัวอย่างเช่นapache2ctl -Sทำงานในลักษณะเดียวกัน
Josip Rodin

4

ssh -v user@serverในขณะนี้จะไม่ถ่ายโอนข้อมูลคำจำกัดความเซิร์ฟเวอร์ทั้งหมดของคุณคุณสามารถลองเชื่อมต่อกับเซิร์ฟเวอร์ด้วยธงแก้ปัญหาอย่างละเอียด: ที่จะให้ข้อมูลมากมายที่จะสะท้อนถึงตัวเลือกที่เปิดใช้งานในการกำหนดค่า sshd

ตัวอย่างเช่นดูที่เอาต์พุตของการเชื่อมต่อนี้ด้วยสวิตช์-v (ลายเซ็นคีย์, โดเมนและที่อยู่ IP ปลอมแปลงโดยเจตนา):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

จากที่คุณสามารถดูวิธีการตรวจสอบที่ได้รับอนุญาตคือ: publickey, รหัสผ่าน, แป้นพิมพ์แบบโต้ตอบ คุณจะเห็นว่าเซิร์ฟเวอร์นี้ไม่อนุญาตการโรมมิ่งและผู้ใช้claudioสามารถเชื่อมต่อโดยใช้กุญแจสาธารณะของเขา

คุณสามารถเพิ่มระดับการแสดงผลข้อมูลโดยระบุตัวอักษร "v" ได้มากกว่านี้ แต่คุณอาจได้รับข้อมูลระดับต่ำกว่าที่คุณต้องการ


3

โดยทั่วไปแล้วการกำหนดค่าของ sshd จะพบได้ในไฟล์ต่อไปนี้: /etc/ssh/sshd_config.

ในการสอบถามการกำหนดค่ารันไทม์คุณสามารถใช้โหมดการทดสอบเพิ่มเติมsshd -Tซึ่งช่วยให้คุณสามารถทดสอบการตั้งค่าไคลเอ็นต์ที่ตรงกัน


1
ฉันไม่คิดว่านี่จะตอบคำถามที่เขาถาม แต่คำถามของเขายังไม่ชัดเจน
Zoredache

1
ดูเหมือนว่าเขากำลังถามวิธีตรวจสอบการกำหนดค่า เท่าที่ฉันทราบไม่มีวิธีสอบถามการกำหนดค่าของ sshd ที่รันไทม์ ดังนั้นการกำหนดค่าสามารถพบได้ในไฟล์ที่ฉันพูดถึง
gparent

อย่างที่คุณพูดคำถามไม่มีเหตุผลดังนั้นฉันจึงคิดว่า OP อาจไม่รู้ว่าไฟล์อยู่ที่ไหนหรือชื่อที่แน่นอน
gparent

หากคุณกำลังจะลงคะแนนฉันโดยไม่มีเหตุผลที่ถูกต้องหลังจาก 4 ปีใช้สามัญสำนึกของคุณและตรวจสอบประวัติคำถามแล้วแนะนำการแก้ไข
gparent

@ โปร่งใสคำถามเดิมค่อนข้างคลุมเครือและมีการพิมพ์ผิดในพา ธ ของไฟล์กำหนดค่าดังนั้นคุณควรใช้ฟังก์ชันแก้ไขเพื่อแก้ไขสตริงนั้นในคำถามแทน และไม่ว่าด้วยวิธีใดคำตอบสำหรับคำถามยืนยันจะปรากฏขึ้นด้านบน
Josip Rodin

2

ไม่มีวิธีรู้จักสอบถามการกำหนดค่าของอินสแตนซ์ที่กำลังทำงานอยู่ฉันคิดว่าถ้าคุณกำลังอ้างอิงเซิร์ฟเวอร์ openssh ขึ้นอยู่กับสิ่งที่คุณต้องการคุณสามารถใช้แฟล็ก -t เพื่อทดสอบไฟล์กำหนดค่าเพื่อให้แน่ใจว่าถูกต้องก่อนที่จะรีสตาร์ทเซิร์ฟเวอร์ ถ้าคุณไม่มีการเข้าถึงนอกเซิร์ฟเวอร์


2

ปัญหาเกี่ยวกับการดูไฟล์ / etc / ssh / sshd_config ตามที่แนะนำโดยคำตอบอื่น ๆ คือมันไม่จำเป็นต้องมีการกำหนดค่าทั้งหมด ไฟล์นี้มีค่าของตัวแปรการกำหนดค่าใด ๆ ที่คุณต้องการตั้งค่าให้ข้ามค่าเริ่มต้นและตามที่จัดส่งมาเป็นความคิดเห็นค่าเริ่มต้นที่สร้างขึ้นใน sshd

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

นอกจากนี้ยังเป็นไปได้อย่างสมบูรณ์ในการรัน sshd ด้วยไฟล์ config ทางเลือกพร้อมกับตัวเลือก -f ดังนั้นไฟล์ที่เก็บไว้ใน / etc / ssh / sshd_config อาจไม่แสดงถึงการตั้งค่าปัจจุบัน

นี่ทำให้คำถามค่อนข้างถูกต้องและเท่าที่ฉันรู้ไม่สามารถตอบได้ด้วยความมั่นใจ


จากข้อมูลทั้งหมดที่เป็นความจริง แต่ก็ไม่ได้นำไปใช้กับ 99% ของเซิร์ฟเวอร์ที่จะทำงาน sshd ติดตั้งจากแพคเกจที่มีการกำหนดค่าเริ่มต้นที่รวบรวมใน.
แอนดรู Schulman

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