如何使用 c#.net 中的 .key 文件连接到 SFTP 服务器
How to Connect to SFTP server using .key file in c#.net
我有一个 C# .NET Windows 服务项目,我正在尝试打开到 SFTP 服务器的 SFTP 连接并将文件放到服务器上。
我有 SFTP 主机名、用户名和密钥文件(.key 文件)。
我这里有密码。
请帮助我在 C# 和 .Net 中使用 SFTP
我试着用下面提到的方式来做:-
using (SSHClient sshClient = new SSHClient(getKeyConnection(HostName, UserName, Port, Myprivatekey.key,PassPhrase)))
{
Console.WriteLine("Connecting to server.");
sshClient.OperationTimeout = TimeSpan.FromSeconds(60);
sshClient.Connect();
Console.WriteLine("Is Connected to server " + sshClient.IsConnected);
}
我的 GetkeyConnection 方法看起来像:
public static ConnectionInfo getKeyConnection(string host, string username, int port, string privateKeyFile,string password)
{
Console.WriteLine("Getting key Connection Info to establish Private Key SFTP");
return new ConnectionInfo(host, port, username, privateKeyObject(username, privateKeyFile,password));
}
我的 privateKeyObject 使用
private static AuthenticationMethod[] privateKeyObject(string username, string publicKeyPath,string password)
{
Console.WriteLine("Private key object method called.");
PrivateKeyFile privateKeyFile = new PrivateKeyFile(publicKeyPath,password);
PrivateKeyAuthenticationMethod privateKeyAuthenticationMethod = new PrivateKeyAuthenticationMethod(username, privateKeyFile);
return new AuthenticationMethod[] { privateKeyAuthenticationMethod };
}
当我尝试连接时,我得到了无效的私钥文件。
知道我们如何做到这一点。
我们有 X.509 证书,它是用中间 CA 签名的,并安装在我们的 SFTP 服务器上。我们有一个私钥文件和一个密码,我在我的身份验证方法中发送了这些文件。对于 SFTP,我们使用 Renci nuget 包
Renci 要求私钥为 openssl 格式。该异常通常是密钥文件格式无效或文件丢失的结果。您可以使用 putty gen、openssl 工具或 Java keytool 实用程序将密钥转换为正确的格式。
注意:
当我们生成 X509 证书时,它会生成一个私钥,需要通过 运行 下面提到的命令将其转换为 RSA 私钥。
openssl rsa -in server.key -out server_new.key
确保以管理员模式打开openssl。
这意味着您的密钥文件应以 --- Begin RSA Private Key----
开头
我有一个 C# .NET Windows 服务项目,我正在尝试打开到 SFTP 服务器的 SFTP 连接并将文件放到服务器上。
我有 SFTP 主机名、用户名和密钥文件(.key 文件)。 我这里有密码。
请帮助我在 C# 和 .Net 中使用 SFTP
我试着用下面提到的方式来做:-
using (SSHClient sshClient = new SSHClient(getKeyConnection(HostName, UserName, Port, Myprivatekey.key,PassPhrase)))
{
Console.WriteLine("Connecting to server.");
sshClient.OperationTimeout = TimeSpan.FromSeconds(60);
sshClient.Connect();
Console.WriteLine("Is Connected to server " + sshClient.IsConnected);
}
我的 GetkeyConnection 方法看起来像:
public static ConnectionInfo getKeyConnection(string host, string username, int port, string privateKeyFile,string password)
{
Console.WriteLine("Getting key Connection Info to establish Private Key SFTP");
return new ConnectionInfo(host, port, username, privateKeyObject(username, privateKeyFile,password));
}
我的 privateKeyObject 使用
private static AuthenticationMethod[] privateKeyObject(string username, string publicKeyPath,string password)
{
Console.WriteLine("Private key object method called.");
PrivateKeyFile privateKeyFile = new PrivateKeyFile(publicKeyPath,password);
PrivateKeyAuthenticationMethod privateKeyAuthenticationMethod = new PrivateKeyAuthenticationMethod(username, privateKeyFile);
return new AuthenticationMethod[] { privateKeyAuthenticationMethod };
}
当我尝试连接时,我得到了无效的私钥文件。 知道我们如何做到这一点。
我们有 X.509 证书,它是用中间 CA 签名的,并安装在我们的 SFTP 服务器上。我们有一个私钥文件和一个密码,我在我的身份验证方法中发送了这些文件。对于 SFTP,我们使用 Renci nuget 包
Renci 要求私钥为 openssl 格式。该异常通常是密钥文件格式无效或文件丢失的结果。您可以使用 putty gen、openssl 工具或 Java keytool 实用程序将密钥转换为正确的格式。
注意:
当我们生成 X509 证书时,它会生成一个私钥,需要通过 运行 下面提到的命令将其转换为 RSA 私钥。
openssl rsa -in server.key -out server_new.key
确保以管理员模式打开openssl。 这意味着您的密钥文件应以 --- Begin RSA Private Key----
开头