विंडोज 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
शिकायत करता है। यह एक समय उपयोग कनेक्शन श्रोता बनाता है। -ddd
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
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
कमांड प्रॉम्प्ट से चल रहा है, तो वर्तमान उपयोगकर्ता को केवल एक सूचीबद्ध होना चाहिए (पढ़ने की अनुमति, इनकार लिखें)।