我正在编写一个 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 密钥(我已经尝试了客户端和服务器公钥)。有人能指出我正确的方向吗?谢谢。
注意:我确实尝试使用批处理文件执行此操作,但如果没有登录服务器,我无法按计划运行该文件。
应该去什么SessionOptions.SshHostKey**Fingerprint** https://winscp.net/eng/docs/library_sessionoptions#sshhostkeyfingerprint is a 指纹SSH 主机密钥。您正在使用一个full主机密钥(您在评论中所说的内容)。
另请参阅 WinSCP 常见问题解答从哪里获取 SSH 主机密钥指纹来授权服务器? https://winscp.net/eng/docs/faq_hostkey
WinSCP GUI 可以生成正确的代码模板 https://winscp.net/eng/docs/ui_generateurl#code为您提供,包括指纹(假设您至少登录过一次):
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)