【发布时间】:2019-12-03 21:20:16
【问题描述】:
我正在编写一个 C# 应用程序(如果我能正常工作,希望最终创建一个 Windows 服务)以使用 SCP 从服务器下载文件(我仅限于 SCP 作为唯一选项)。我正在使用 WinSCP .NET 程序集 (v 5.15.3)。
我的 PC 和服务器之间有一个 SSH 隧道,因此可以从命令行执行以下操作:
ssh user:server
在我的代码中设置SshHostKeyFingerprint 时遇到问题。
WinSCP.SessionOptions options = new WinSCP.SessionOptions();
options.HostName = "ip address";
options.Password = "password";
options.PortNumber = 22;
options.UserName = "username";
options.Protocol = WinSCP.Protocol.Scp;
options.SshHostKeyFingerprint = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkVu2A3SLLdTulOQ1XyGY......"; //full ssh key
为了便于阅读,我缩短了 SSH 密钥。
分配SshHostKeyFingerprint 时出现以下错误:
SSH 主机密钥指纹“ssh-rsa 2048 AAAAB3NzaC1yc2EAA......”不匹配模式 /((ssh-rsa|ssh-dss|ssh-ed25519|ecdsa-sha2-nistp(256|384|521 ))( |-))?(\d+ )?(([0-9a-f]{2}(:|-)){15}[0-9a-f]{2}|[0-9a- zA-Z+/]{43}=)(;((ssh-rsa|ssh-dss|ssh-ed25519|ecdsa-sha2-nistp(256|384|521))(|-))?(\d+)? (([0-9a-f]{2}(:|-)){15}[0-9a-f]{2}|[0-9a-zA-Z+/]{43}=))*/
我想我分配了错误的 SSH 密钥(我已经尝试过客户端和服务器公钥)。谁能指出我正确的方向?谢谢。
注意:我确实尝试使用批处理文件执行此操作,但如果没有登录服务器,我无法按计划运行。
【问题讨论】:
-
不设置指纹试试,如果要验证你连接的服务器确实是你要连接的服务器并且没有被欺骗,需要指定指纹。
-
嗨@Sawrub,这对我不起作用,但 Martin Prikryl 设法给了我答案,谢谢。
标签: c# ssh scp winscp winscp-net