SftpClient sftp = null;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="host">服务器名或IP</param>
/// <param name="port">端口</param>
/// <param name="user">账号</param>
/// <param name="keyFilePath">私钥文件路径</param>
/// <param name="passPhrase">私钥密码</param>
public SFtpClient(string host, int port, string user, string keyFilePath, string passPhrase)
{
//创建验证方法
var authMethod = new Renci.SshNet.PrivateKeyAuthenticationMethod(user, new Renci.SshNet.PrivateKeyFile(keyFilePath, passPhrase));
//创建连接信息
var connectionInfo = new Renci.SshNet.ConnectionInfo(host, port, user, authMethod);
//创建SFTP客户端
sftp = new SftpClient(connectionInfo);
if (sftp != null)
{
sftp.ConnectionInfo.RetryAttempts = 5;
sftp.ConnectionInfo.Timeout = new TimeSpan(0, 3, 0);
}
}
public bool Connect()
{
if (sftp == null)
{
return false;
}
if (sftp.IsConnected)
{
return true;
}
try
{
sftp.Connect();
return true;
}
catch (Exception)
{
string server = string.Format("{0}:{1}", sftp.ConnectionInfo.Username, sftp.ConnectionInfo.Host);
return false;
}
}
public void DisConnect()
{
if (sftp == null)
{
return;
}
if (!sftp.IsConnected)
{
return;
}
try
{
sftp.Disconnect();
sftp.Dispose();
sftp = null;
}
catch (Exception)
{
}
}
只写了ssh私钥认证连接,其它操作写的人太多了就不写了。