विंडोज 8.1 चलाना मैं server refused our keyसमस्या में चला गया ।
गाइड के बाद: https://winscp.net/eng/docs/guide_windows_openssh_server
विंडोज लॉगिन का उपयोग करके कनेक्शन बनाना आसान था usernameऔर password। हालांकि, usernameए के साथ संयोजन में प्रमाणीकरण private key, प्रतिक्रिया थी server refused our key।
सार्वजनिक कुंजी के साथ काम करने के लिए इसे फ़ाइल पर अनुमतियों के लिए नीचे लाया गया:
C:\ProgramData\ssh\administrators_authorized_keys
यह एक उपयोगी पृष्ठ है: https://github.com/PowerShell/Win32-OpenSSH/wiki/Troublesourcing-Steps
दो ओपनएसएसएच सेवाओं को बंद करें, फिर एक के command promptसाथ खोलें admin permissions। फिर भागो:
C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd
नोट: exe के लिए पूर्ण पथ निर्दिष्ट करें अन्यथा sshdशिकायत करता है। यह एक समय उपयोग कनेक्शन श्रोता बनाता है। -ddd3 स्तर वर्बोज़ है।
एक कनेक्शन बनाने के बाद, लॉग को स्कैन करने से पता चला:
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
OpenSSH सर्वर से संबंध बनाने के लिए WinSCPnet.dll का उपयोग करने का C # उदाहरण: 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अपने स्वयं के मूल्यों के साथ।
संपादित करें: प्रशासकों का जोड़ा स्क्रीनशॉट_अधिकृत_की फ़ाइल अनुमतियाँ:

जब OpenSSH SSH Serverसेवा के रूप में चल रहा है, तो केवल Systemअनुमति होनी चाहिए। हालांकि, यदि sshd.exeकमांड प्रॉम्प्ट से चल रहा है, तो वर्तमान उपयोगकर्ता को केवल एक सूचीबद्ध होना चाहिए (पढ़ने की अनुमति, इनकार लिखें)।