ใช้ Windows 8.1 ฉันพบในไฟล์ server refused our keyปัญหา
ทำตามคำแนะนำ: https://winscp.net/eng/docs/guide_windows_openssh_server 
การเชื่อมต่อทำได้ง่ายโดยใช้การเข้าสู่ระบบ Windows usernameและpassword. อย่างไรก็ตามการพิสูจน์ตัวตนโดยใช้usernameร่วมกับ a private keyการตอบสนองคือserver refused our keyการตอบสนองได้
การทำให้มันทำงานกับคีย์สาธารณะลงมาถึงสิทธิ์ในไฟล์:
C:\ProgramData\ssh\administrators_authorized_keys
หน้านี้เป็นประโยชน์:  https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps
หยุดบริการ OpenSSH สองบริการจากนั้นเปิดcommand promptด้วยadmin permissions . จากนั้นเรียกใช้:
C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd
หมายเหตุ: ระบุเส้นทางแบบเต็มไปยัง exe มิฉะนั้นจะsshdบ่น สิ่งนี้จะสร้างตัวรับฟังการเชื่อมต่อแบบใช้ครั้งเดียว -dddเป็น verbose ระดับ 3
หลังจากทำการเชื่อมต่อการสแกนบันทึกเปิดเผย:
debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
debug3: Failed to open file:C:/ProgramData/ssh/administrators_authorized_keys error:2
debug1: Could not open authorized keys '__PROGRAMDATA__/ssh/administrators_authorized_keys':
        No such file or directory
ต้องสร้างไฟล์: C:\ProgramData\ssh\administrators_authorized_keys
และคัดลอกpublic keyข้อความลงในไฟล์เช่น: ssh-rsa AAAA................MmpfXUCj rsa-key-20190505
จากนั้นบันทึกไฟล์ ฉันบันทึกไฟล์เช่นเดียวUTF-8กับไฟล์BOM. ไม่ได้ทดสอบANSIไม่ได้ทดสอบ
จากนั้นเรียกใช้บรรทัดคำสั่งแบบครั้งเดียวอีกครั้งในบันทึกแสดง:
debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:/ProgramData/ssh/administrators_authorized_keys.
        Authentication refused.
S-1-5-11เป็นชื่อที่กำหนดให้กับไฟล์System.
ในการแก้ไขให้Bad permissionsคลิกขวาที่administrators_authorized_keysไฟล์จากSecurity Tabนั้นไปที่คลิกAdvancedปุ่มและลบสิทธิ์ที่สืบทอดมา แล้วลบทั้งหมดGroup or user names:ยกเว้นสำหรับชื่อผู้ใช้เข้าสู่ระบบของ Windows เช่น: YourMachineName\username
สิทธิ์ที่usernameควรจะเป็นRead Allow,Write Denyทุกอย่างอื่นจะไม่ถูกตรวจสอบ เจ้าของไฟล์ควรเป็นเช่นกันYourMachineName\username
สิ่งนี้ช่วยแก้ปัญหาได้
ลิงค์ที่เป็นประโยชน์อื่น ๆ :
ดาวน์โหลด OpenSSH-Win32.zip จาก:  https://github.com/PowerShell/Win32-OpenSSH/releases
ตัวอย่าง C # ของวิธีใช้ WinSCPnet.dll เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ OpenSSH:  https://winscp.net/eng/docs/library#csharp
นี่คือข้อมูลโค้ดเพื่อทำการเชื่อมต่อโดยใช้WinSCPnet.dll:
static void WinSCPTest() {
    SessionOptions ops = new SessionOptions {
        Protocol = Protocol.Sftp, 
        PortNumber = 22,
        HostName = "192.168.1.188", 
        UserName = "user123",
        //Password = "Password1",
        SshHostKeyFingerprint = @"ssh-rsa 2048 qu0f........................ddowUUXA="
    };
    ops.SshPrivateKeyPath = @"C:\temp\rsa-key-20190505.ppk";
    using (Session session = new Session()) {
        session.Open(ops);
        MessageBox.Show("success");
    }
}
แทนที่SshHostKeyFingerprintและSshPrivateKeyPathด้วยคุณค่าของคุณเอง
แก้ไข: เพิ่มภาพหน้าจอของการอนุญาตไฟล์ administrator_authorized_keys:

เมื่อOpenSSH SSH Serverใดที่ทำงานเป็นบริการSystemควรได้รับอนุญาตเท่านั้น อย่างไรก็ตามหากเรียกใช้sshd.exeจากพรอมต์คำสั่งผู้ใช้ปัจจุบันควรเป็นผู้เดียวในรายการ (อ่านอนุญาตเขียนปฏิเสธ)