我有一个C#.Net项目,正在尝试打开与服务器的SFTP连接并将文件放置到服务器。
我有SFTP 主机名,用户名和密钥文件(。pem文件)。我这里没有password。
请帮助我使用C#和.Net中的SFTP。
可能每个SFTP / SSH库都支持公用密钥身份验证。
例如:
var privateKey = new PrivateKeyFile(@"C:\some\path\key.pem");
var client = new SftpClient("example.com", "username", new[] { privateKey });
client.Connect();
WinSCP .NET assembly(NuGet package):
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "username",
SshHostKeyFingerprint = "ssh-rsa 2048 ...=",
SshPrivateKeyPath = @"C:\some\path\key.ppk",
};
using (Session session = new Session())
{
session.Open(sessionOptions);
// Your code
}
WinSCP需要将密钥转换为PPK格式(您可以使用WinSCP GUI或PuTTYgen)。另请注意,WinSCP会验证SSH主机密钥(SshHostKeyFingerprint
)。 SSH.NET默认无法执行此操作,这是一个安全漏洞。
(我是图书馆的作者)
可能每个SFTP / SSH库都支持公用密钥身份验证。
例如:
var privateKey = new PrivateKeyFile(@"C:\some\path\key.pem");
var client = new SftpClient("example.com", "username", new[] { privateKey });
client.Connect();
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "username",
SshHostKeyFingerprint = "ssh-rsa 2048 2EPqmpSRaRtUIqwvm15rzavssrhHxJ3avJWh9mBaz8M=",
SshPrivateKeyPath = @"C:\some\path\key.ppk",
};
using (Session session = new Session())
{
session.Open(sessionOptions);
// Your code
}
(我是图书馆的作者)