/// <summary> /// 登录到Sftp服务器 /// </summary> /// <param name="config">Sftp参数</param> /// <returns></returns> public OperationReturn LogOn(SftpHelperConfig config) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = 0; try { if (mSftp != null) { try { if (mSftp.Connected) { mSftp.Connected = false; } mSftp = null; } catch { } } mSftp = new Sftp(); mSftp.OnSSHServerAuthentication += (s, se) => se.Accept = true; mSftp.SSHHost = config.ServerHost; mSftp.SSHPort = config.ServerPort; mSftp.SSHUser = config.LoginUser; switch (config.AuthType) { case 1: mSftp.SSHAuthMode = SftpSSHAuthModes.amPassword; mSftp.SSHPassword = config.LoginPassword; break; case 2: mSftp.SSHAuthMode = SftpSSHAuthModes.amPublicKey; mSftp.SSHCert = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertPassword); break; case 3: mSftp.SSHAuthMode = SftpSSHAuthModes.amMultiFactor; mSftp.SSHPassword = config.LoginPassword; mSftp.SSHCert = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertSubject); break; default: optReturn.Result = false; optReturn.Code = Defines.RET_CONFIG_INVALID; optReturn.Message = string.Format("Auth type not support.\t{0}", config.AuthType); return(optReturn); } mSftp.SSHLogon(config.ServerHost, config.ServerPort); return(optReturn); } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; return(optReturn); } }
/// <summary> /// 上传文件,在config中配置Sftp参数,上传结束后立马退出Sftp服务器 /// </summary> /// <param name="config">Sftp参数</param> /// <returns></returns> public static OperationReturn UploadFile(SftpHelperConfig config) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = 0; try { Sftp sftp = new Sftp(); sftp.OnSSHServerAuthentication += (s, se) => se.Accept = true; sftp.SSHHost = config.ServerHost; sftp.SSHPort = config.ServerPort; sftp.SSHUser = config.LoginUser; sftp.RemoteFile = config.RemoteFile; sftp.LocalFile = config.LocalFile; switch (config.AuthType) { case 1: sftp.SSHAuthMode = SftpSSHAuthModes.amPassword; sftp.SSHPassword = config.LoginPassword; break; case 2: sftp.SSHAuthMode = SftpSSHAuthModes.amPublicKey; sftp.SSHCert = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertPassword); break; case 3: sftp.SSHAuthMode = SftpSSHAuthModes.amMultiFactor; sftp.SSHPassword = config.LoginPassword; sftp.SSHCert = new Certificate(CertStoreTypes.cstPFXFile, config.CertFile, config.CertPassword, config.CertSubject); break; default: optReturn.Result = false; optReturn.Code = Defines.RET_CONFIG_INVALID; optReturn.Message = string.Format("Auth type not support.\t{0}", config.AuthType); return(optReturn); } sftp.Overwrite = true; sftp.MakeDirectory(config.RemoteDirectory); sftp.Upload(); sftp.Connected = false; sftp.Dispose(); return(optReturn); } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; return(optReturn); } }
/// <summary> /// 上传文件,上传结束后不会退出Sftp服务器 /// </summary> /// <param name="config">Sftp参数</param> /// <returns></returns> public OperationReturn UploadFile1(SftpHelperConfig config) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = 0; try { if (mSftp == null || !mSftp.Connected) { optReturn = LogOn(config); if (!optReturn.Result) { return(optReturn); } } if (mSftp == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Sftp is null"); return(optReturn); } mSftp.RemoteFile = config.RemoteFile; mSftp.LocalFile = config.LocalFile; mSftp.Overwrite = true; mSftp.MakeDirectory(config.RemoteDirectory); mSftp.Upload(); return(optReturn); } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; return(optReturn); } }