以编程方式创建 WinSSHD 虚拟帐户



我们使用 WinSSHD 作为 SFTP 服务器,我希望我的 ASP.NET C# Web 应用程序的用户能够在服务器上创建新的虚拟帐户。 (Web 应用程序的每个用户都有多个合作伙伴,他们需要单独的 FTP 帐户,因此我每次都手动创建它们并不方便。 这些虚拟帐户中的每一个都需要有一个挂载点,以便其路由路径指向不同的物理路径。

目前,我只知道如何在WinSSHD控制面板中做这种事情。 有没有某种 API

我已经想通了。 我最终做了这样的事情:

// This Guid is the uuid of the coclass in WinsshdCfgManip.idl (depends on your WinSSHD version)
dynamic config = Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("A3E7581A-5182-41C4-9AFD-2DFF07F06167"), server, true));
config.SetSite("WinSSHD");
config.LockWinsshdSettings();
config.LoadWinsshdSettings();
config.ProcessInstruction(@"access.virtAccounts.New.virtAccount """ + username + @"""");
config.ProcessInstruction(@"access.virtAccounts.New.virtPassword.Set """ + password + @"""");
config.ProcessInstruction(@"access.virtAccounts.New.group ""Virtual Users""");
config.ProcessInstruction(@"access.virtAccounts.New.useDefaultWinAccount false");
config.ProcessInstruction(@"access.virtAccounts.New.winDomain """ + winDomain + @"""");
config.ProcessInstruction(@"access.virtAccounts.New.winAccount """ + winAccount + @"""");
config.ProcessInstruction(@"access.virtAccounts.New.loginAllowed yes");
config.ProcessInstruction(@"access.virtAccounts.New.passwordAuth required");
config.ProcessInstruction(@"access.virtAccounts.New.permitRemoteAdmin no");
config.ProcessInstruction(@"access.virtAccounts.New.mapRemoteHomeDir no");
config.ProcessInstruction(@"access.virtAccounts.New.allowSessionJobBreakaway no");
config.ProcessInstruction(@"access.virtAccounts.New.permitTerminalShell no");
config.ProcessInstruction(@"access.virtAccounts.New.permitExecRequests no");
config.ProcessInstruction(@"access.virtAccounts.New.permitSftp yes");
config.ProcessInstruction(@"access.virtAccounts.New.sfsMap.useDefaultSfsMap false");
// Backslashes in rootPath need to be escaped as \ for ProcessInstruction
// E.g.:
// string rootPath = @"C:\FTP\MyFtpFolder";
config.ProcessInstruction(@"access.virtAccounts.New.sfsMap.mountPoints.1.realRootPath """ + rootPath + @"""");
config.ProcessInstruction(@"access.virtAccounts.NewCommit");
config.SaveWinsshdSettings(1);
config.UnlockWinsshdSettings();

最新更新