ฉันติดตั้ง OpenSSH บนเซิร์ฟเวอร์ Windows สองตัวโดยใช้ Chocolatey ฉันใช้มันสำหรับการปรับใช้โดยอัตโนมัติจากกล่อง Linux ของฉัน ฉันยังต้องการที่จะสามารถ SSH ใน PowerShell บนเครื่องเหล่านี้มากกว่าพรอมต์คำสั่ง มันทำงานได้ดีสำหรับหนึ่งในนั้น แต่ปฏิเสธที่จะทำงานให้กับอีกอันหนึ่ง พวกเขามีการกำหนดค่าเหมือนกันทุกประการเท่าที่ฉันสามารถบอกได้
C:\ProgramData\ssh\sshd_config เหมือนกันสำหรับทั้งสองเซิร์ฟเวอร์:
# นี่คือไฟล์การกำหนดค่าทั้งระบบของเซิร์ฟเวอร์ sshd ดู
# sshd_config(5) สำหรับข้อมูลเพิ่มเติม
# กลยุทธ์ที่ใช้สำหรับตัวเลือกในค่าเริ่มต้น sshd_config ที่มาพร้อมกับ
# OpenSSH คือการระบุตัวเลือกด้วยค่าเริ่มต้นโดยที่
# เป็นไปได้ แต่ปล่อยให้พวกเขาแสดงความคิดเห็น ตัวเลือกที่ไม่มีความคิดเห็นจะแทนที่
#ค่าเริ่มต้น
#ท่าเรือ22
#AddressFamily ใด ๆ
#ฟังที่อยู่ 0.0.0.0
#ฟังที่อยู่ ::
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
# ยันต์และกุญแจ
#RekeyLimit ไม่มีค่าเริ่มต้น
#บันทึก
#SyslogFacility AUTH
ข้อมูล #LogLevel
# การรับรองความถูกต้อง:
#LoginGraceTime 2 ม
#PermitRootLogin ห้ามรหัสผ่าน
#StrictModes ใช่
#MaxAuthTries 6
#MaxSessions 10
PubkeyAuthentication ใช่
# ค่าเริ่มต้นคือการตรวจสอบทั้ง .ssh/authorized_keys และ .ssh/authorized_keys2
# แต่สิ่งนี้ถูกแทนที่ ดังนั้นการติดตั้งจะตรวจสอบเฉพาะ .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsไม่มีไฟล์
# เพื่อให้ใช้งานได้ คุณจะต้องมีรหัสโฮสต์ใน %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication เลขที่
# เปลี่ยนเป็น ใช่ หากคุณไม่เชื่อถือ ~/.ssh/known_hosts for
# การรับรองความถูกต้องตามโฮสต์
#IgnoreUserKnownHosts หมายเลข
# อย่าอ่านไฟล์ ~/.rhosts และ ~/.shosts ของผู้ใช้
#IgnoreRhosts ใช่
# หากต้องการปิดใช้งานรหัสผ่านข้อความธรรมดาแบบ Tunneled ให้เปลี่ยนเป็นไม่ที่นี่!
เลขที่ยืนยันรหัสผ่าน
#PermitEmptyPasswords เลขที่
# ตัวเลือก GSSAPI
#GSSAPIAuthentication เลขที่
#AllowAgentForwarding ใช่
#AllowTcpForwarding ใช่
#เกตเวย์พอร์ต #
#PermitTTY ใช่
#PrintMotd ใช่
#PrintLastLog ใช่
#TCPKeepAlive ใช่
#ใช้เข้าสู่ระบบหมายเลข
#ใบอนุญาตผู้ใช้สิ่งแวดล้อม เลขที่
#ClientAliveInterval 0
#ClientAliveCountสูงสุด 3
#ใช้หมายเลข DNS
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#อุโมงค์อนุญาตหมายเลข
#ChrootDirectory ไม่มี
#เวอร์ชันภาคผนวกไม่มี
# ไม่มีเส้นทางแบนเนอร์เริ่มต้น
#ไม่มีแบนเนอร์
# ลบล้างค่าเริ่มต้นที่ไม่มีระบบย่อย
ระบบย่อย sftp sftp-server.exe
# ตัวอย่างของการตั้งค่าที่ลบล้างในแต่ละผู้ใช้
#Match ผู้ใช้ anoncvs
# AllowTcpForwarding เลขที่
#ใบอนุญาตTTYเลขที่
# เซิร์ฟเวอร์ ForceCommand cvs
#ผู้ดูแลกลุ่มแมตช์
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
C:\Users\Nacht.ssh\authorized_keys เหมือนกัน:
command="C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+jD0xfG/ZG1syjec5VWou4Sc/eDmtqPAZTy7OUbUSLxd0dCcbo5tQmzxeteSMEDMRR51Uqf9H+LuBVdf+l0CRQLMnsp1sZp5abOJoQJPvEcBHuAJZYknXc3TxvmULsSBRNKJu9yu9MIHde2PB9yrTONxwYTCqDjRibZyAUPJbv6S8SDMrf9/4E3eeOo4efOFM5Vp+bGs5BcHqSK5lDnWhoB3acqjo0zOUZk+mVTxjoCUCMBvh3I6V7tqK8+OMmM8XH0ELsCiM47wFcGS3/usj4K0OaMiylBmai0A4HM3vuXZzHoJvpB4b+N+O5lki8kwFPf8lwpgjukR/NC8wxcwR nacht@savage
ฉันกำลังทดสอบจากกล่องลินุกซ์ เมื่อฉัน ssh ไปยังเซิร์ฟเวอร์เครื่องแรก ฉันได้รับพรอมต์ของ PowerShell ตามที่คาดไว้ เมื่อฉัน ssh ไปยังเซิร์ฟเวอร์ที่สอง ฉันได้รับคำสั่ง cmdฉันไม่พบข้อผิดพลาดใดๆ เลย Event Logs แสดงเนื้อหาเดียวกันสำหรับทั้งสองเซิร์ฟเวอร์ภายใต้หมวดหมู่ "OpenSSH/Operational" แต่เซิร์ฟเวอร์ที่สองไม่มีบันทึกทั้งหมดภายใต้หมวดหมู่ "Windows PowerShell" จากการเริ่ม PowerShell
บนเซิร์ฟเวอร์ Windows นี่คือสิ่งที่ฉันรันเพื่อติดตั้ง OpenSSH:
choco ติดตั้ง opensh -y
. "C:\Program Files\OpenSSH-Win64\install-sshd.ps1"
sshd บริการเริ่มต้น
New-NetFirewallRule -DisplayName "SSH" -Direction Inbound -โปรโตคอล TCP -LocalPort 22 -Action Allow
ช็อคโกแลตรายงานว่ามีการติดตั้ง opensh เวอร์ชันเดียวกันบนทั้งสอง: opensh 8.0.0.1 [อนุมัติ]
อะไรอาจแตกต่างกันระหว่างสองเซิร์ฟเวอร์นี้ที่อาจทำให้ตัวเลือกคำสั่งทำงานสำหรับเซิร์ฟเวอร์หนึ่งและอีกเซิร์ฟเวอร์หนึ่งไม่ได้