/// <summary> /// 建立SFTP连接 /// </summary> /// <param name="type"></param> public void ConnectSFTP(SFTPConnectTypeEnum type = SFTPConnectTypeEnum.Default) { if (PortIsOpen()) { try { switch (type) { case SFTPConnectTypeEnum.Password: ConnectSFTPByPassword(); break; case SFTPConnectTypeEnum.PrivateKey: ConnectSFTPByPrivateKey(); break; case SFTPConnectTypeEnum.Default: ConnectSFTPByPassword(); if (!IsConnected) { ConnectSFTPByPrivateKey(); } break; default: break; } } catch (Exception e) { _log.Error("连接SFTP失败!", e); } } }
/// <summary> /// 构造函数 /// </summary> public SFTPServer() { //初始化日志对象 _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); //从配置文件中加载凭证信息 var config = ConfigurationManager.GetSection("SftpServer") as NameValueCollection; _hostName = config["HostName"]; _userName = config["UserName"]; _password = config["Password"]; _defaultfRemotePath = config["DefaultfRemotePath"] ?? "/"; //默认值为/ _port = Convert.ToInt32(config["Port"] ?? "22"); //默认端口为22 _privateKeyFile = config["PrivateKeyFile"]; _passphrase = config["Passphrase"] ?? ""; //默认为空 if (!Enum.TryParse(config["ConnectWay"], true, out _connectWay)) { _connectWay = SFTPConnectTypeEnum.FirstPasswordThenPrivateKey; } }