Windows 8.1 çalıştırırken server refused our key
sorunla karşılaştım.
Kılavuzu takip ederek: https://winscp.net/eng/docs/guide_windows_openssh_server
Windows oturum açma username
ve password
. Ancak, a ile username
kombinasyon halinde kimlik doğrulaması private key
yapıldığında yanıtserver refused our key
.
Bir ortak anahtarla çalışmasını sağlamak , dosyadaki izinlere geldi :
C:\ProgramData\ssh\administrators_authorized_keys
Bu yararlı bir sayfadır: https://github.com/PowerShell/Win32-OpenSSH/wiki/Trfunction-Steps
İki OpenSSH hizmetini durdurun, ardından bir command prompt
ile açın admin permissions
. O zaman koş:
C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd
Not: Aksi takdirde sshd
şikayet ederseniz exe'nin tam yolunu belirtin . Bu, tek kullanımlık bir bağlantı dinleyicisi oluşturur. -ddd
3. seviye ayrıntılı olmalıdır.
Bir bağlantı kurduktan sonra, günlükleri tarayarak ortaya çıkan:
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
Dosyayı oluşturmalıydı: C:\ProgramData\ssh\administrators_authorized_keys
Ve public key
metni içine kopyalayın , örneğin: ssh-rsa AAAA................MmpfXUCj rsa-key-20190505
Ve sonra dosyayı kaydedin. Ben dosyayı kaydettiğiniz UTF-8
ile BOM
. Test etmediANSI
.
Ardından günlüklerde tek seferlik komut satırını tekrar çalıştırmak şunu gösterdi:
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
'e verilen addır System
.
Düzeltmek için dosyaya Bad permissions
sağ tıklayın , simgesine gidin, düğmeyi tıklayın ve devralınan izinleri kaldırın. Daha sonra Windows oturum açma kullanıcı adı hariç tümünü silin , örneğin:
Bunun için izinler olmalı , diğer her şey işaretlenmemiş. Dosyanın sahibi de olmalıdıradministrators_authorized_keys
Security Tab
Advanced
Group or user names:
YourMachineName\username
username
Read Allow
Write Deny
YourMachineName\username
Bu sorunu çözdü.
Diğer Yararlı bağlantılar:
OpenSSH-Win32.zip dosyasını şu adresten indirin: https://github.com/PowerShell/Win32-OpenSSH/releases
OpenSSH sunucusuna bağlantı yapmak için WinSCPnet.dll'nin nasıl kullanılacağına dair C # örneği: https://winscp.net/eng/docs/library#csharp
Aşağıdakileri kullanarak bağlantı kurmak için kod parçacığı aşağıdadır 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
Ve SshPrivateKeyPath
kendi değerlerinizle değiştirin .
Düzenleme: administrators_authorized_keys dosya izinlerinin ekran görüntüsü eklendi:
Ne zaman OpenSSH SSH Server
Hizmet Olarak çalışıyorsa, o zaman sadece System
iznine sahip olmalıdır. Ancak, sshd.exe
komut isteminden çalıştırılıyorsa , listelenen tek kullanıcı geçerli kullanıcı olmalıdır (okuma izni, yazma reddi).