Score:0

ด้วยเซิร์ฟเวอร์ Microsoft OpenSSH สำหรับ Windows เราจะอ้างอิงอักขระช่องว่างในคำสั่งบังคับในไฟล์ Authorized_keys ได้อย่างไร

ธง ve

เรามีการตั้งค่า การใช้งานเซิร์ฟเวอร์ OpenSSH ของ Microsoft บนเซิร์ฟเวอร์ Windows 2019 (v1809) และเปิดใช้งานการรับรองความถูกต้องตามคีย์สาธารณะ เราต้องการที่จะปรับใช้ คำสั่งบังคับ และกำลังต่อสู้กับ อักขระช่องว่างในเส้นทาง ของคำสั่งดังกล่าว

ตัวอย่างขั้นต่ำ:

ผู้ใช้ ผู้ใช้1 มีดังต่อไปนี้ อนุญาต_คีย์ ไฟล์:

command="C:\Program Files\SomePath\SomeProgram.exe" ssh-ed25519 AAAAC3N...

เมื่อเราพยายามที่จะ จุ๊ๆ เข้าไปในเครื่องในฐานะผู้ใช้นั้น จะเกิดสิ่งต่อไปนี้:

$ ssh -i <user1_key_id> user1@server.example.com

ไม่รู้จัก 'C:\Program' เป็นคำสั่งภายในหรือภายนอก
โปรแกรมที่ใช้งานได้หรือแบตช์ไฟล์
ปิดการเชื่อมต่อกับ server.example.com

(โปรดทราบว่าเรามีเอเจนต์ SSH ที่ทำงานอยู่เพื่อไม่ให้มีการสืบค้นข้อความรหัสผ่านในส่วนย่อยของเซสชันเทอร์มินัลด้านบน)

IMHO ค่อนข้างชัดเจนว่าปัญหาเกิดจากอักขระช่องว่างในเส้นทางของโปรแกรมที่ควรดำเนินการอย่างไรก็ตาม เราไม่แน่ใจว่าทำไมเครื่องหมายอัญประกาศคู่รอบๆ คำสั่งใน อนุญาต_คีย์ ไฟล์ไม่ได้ป้องกันปัญหา เราได้พยายามเพิ่มเครื่องหมายคำพูดคู่เพิ่มเติมโดยใช้วิธีการ Escape ที่รู้จักกันดี:

command="\"C:\Program Files\SomePath\SomeProgram.exe\"" ...

command="^"C:\Program Files\SomePath\SomeProgram.exe^"" ...
command="""C:\Program Files\SomePath\SomeProgram.exe""" ...

อันแรกนำไปสู่ข้อผิดพลาดเดียวกันกับที่อธิบายไว้ข้างต้น รายการที่สองและรายการที่สามนำไปสู่ข้อความแสดงข้อผิดพลาดอื่น:

user1@server.example.com: ปฏิเสธการอนุญาต (publickey)

ตอนนี้เราติดขัดและมีคำถามดังนี้

เราจะต้องเขียนคำสั่งดังกล่าวอย่างไรใน อนุญาต_คีย์ ไฟล์สำหรับเซิร์ฟเวอร์ Microsoft OpenSSH สำหรับ Windows?

Score:1
ธง cn

คำสั่งที่จะดำเนินการคือทั้งบรรทัดหลัง "command=" moniker

จำเป็นต้องมีเครื่องหมายคำพูดเพื่อป้องกันช่องว่างในเส้นทางปฏิบัติการของคุณบนเซิร์ฟเวอร์เป้าหมาย
เครื่องหมายคำพูดในไฟล์ Authorized_keys จะต้องมี Escape ด้วย เครื่องหมายทับขวา:

ดังนั้นควรมีลักษณะดังนี้:

command=\"C:\Program Files\SomePath\SomeProgram.exe\" ssh-ed25519 AAAAC3N...
Binarus avatar
ve flag
ขอบคุณมากและ +1 อย่างไรก็ตาม สิ่งนี้นำไปสู่ข้อผิดพลาด 'การอนุญาตถูกปฏิเสธ' ที่อธิบายไว้ในโพสต์ต้นฉบับของฉัน ...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา