Menjalankan Windows 8.1 Saya mengalami server refused our key
masalah.
Mengikuti panduan ini: https://winscp.net/eng/docs/guide_windows_openssh_server
Sangat mudah untuk membuat koneksi menggunakan login Windows username
dan password
. Namun, mengautentikasi dengan username
kombinasi dengan a private key
, tanggapannya adalah server refused our key
.
Membuatnya bekerja dengan kunci publik turun ke izin pada file:
C:\ProgramData\ssh\administrators_authorized_keys
Ini adalah halaman yang berguna: https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps
Hentikan dua layanan OpenSSH, lalu buka command prompt
dengan admin permissions
. Lalu lari:
C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd
Catatan: tentukan path lengkap ke exe jika tidak sshd
mengeluh. Ini membuat pemroses koneksi sekali pakai. Itu -ddd
verbose level 3.
Setelah membuat koneksi, pemindaian log mengungkapkan:
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
Harus membuat file: C:\ProgramData\ssh\administrators_authorized_keys
Dan salin public key
teks ke dalamnya, misalnya: ssh-rsa AAAA................MmpfXUCj rsa-key-20190505
Lalu simpan file. Saya menyimpan file seperti UTF-8
dengan BOM
. Tidak menguji ANSI
.
Kemudian menjalankan baris perintah satu kali lagi, di log menunjukkan:
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
adalah nama yang diberikan untuk System
.
Untuk memperbaikinya Bad permissions
, klik kanan pada administrators_authorized_keys
file, buka Security Tab
, klik Advanced
tombol dan hapus izin yang diwariskan. Kemudian hapus semua Group or user names:
kecuali untuk nama pengguna login Windows, misalnya: YourMachineName\username
Izin untuk itu username
harus Read Allow
, yang Write Deny
lainnya tidak dicentang. Pemilik file juga harusYourMachineName\username
Ini memperbaiki masalah.
Tautan Berguna Lainnya:
Unduh OpenSSH-Win32.zip dari: https://github.com/PowerShell/Win32-OpenSSH/releases
C # contoh bagaimana menggunakan WinSCPnet.dll untuk membuat koneksi ke server OpenSSH: https://winscp.net/eng/docs/library#csharp
Berikut adalah potongan kode untuk membuat koneksi menggunakan 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");
}
}
Gantikan SshHostKeyFingerprint
dan SshPrivateKeyPath
dengan nilai-nilai Anda sendiri.
Edit: menambahkan tangkapan layar izin file administrator_authorized_keys:
Saat OpenSSH SSH Server
dijalankan sebagai Layanan, maka hanya System
harus memiliki izin. Namun, jika dijalankan sshd.exe
dari command prompt, maka pengguna saat ini harus menjadi satu-satunya pengguna yang terdaftar (read allow, write deny).