2014-09-22 113 views
0

这可能通过我的代码创建sftp用户吗?我使用bitvise SSH服务器作为我的sftp服务器,而filezilla服务器作为我的ftp服务器,现在我想为不同的客户创建不同的用户,以便他们都可以访问我的服务器上的不同文件夹,并且无法访问访问彼此的路径(文件夹)。 我可以使用它们中的任何一个(sftp或ftp),但我的优先级是sftp。任何人都可以通过c#代码在sftp或ftp中创建用户创建的一些想法?通过c#代码创建SFTP或FTP用户帐户

+0

看起来像你的服务器是[编写脚本](https://www.bitvise.com/ssh-server-guide-scriptable),你有没有尝试任何事情到目前为止? – nvoigt 2014-09-22 05:43:46

+0

@nvoigt不,我没有找到任何有用的工作解决方案,我的要求。我仍在寻找它。 – 2014-09-22 06:27:15

+0

@rufanov这意味着我将不得不创建不同的Windows帐户,以便为sftp创建不同的用户帐户(在bitvise ssh服务器中的虚拟帐户)? – 2014-09-22 06:29:25

回答

1

对于FileZilla的服务器,你可以修改C:\Program Files (x86)\FileZilla Server\FileZilla Server.xmlFileZillaServer/Users),并在服务器使用重新加载配置:

"FileZilla Server.exe" /reload-config 
+0

这就是我为了重新加载配置文件所做的:'''''''''''''''fileZillaPath = @“C:\ Program Files(x86)\ FileZilla Server”;''System.Diagnostics.Process.Start(“CMD.exe”,“ C“+ fileZillaPath +”\\\“FileZilla Server.exe \”/ reload-config“);' – 2014-09-22 08:46:23

+0

这是我们如何重新加载文件,对不对?但是这不起作用,我没有在filezilla服务器上看到任何用户。 – 2014-09-22 08:48:18

+0

我会说你缺少可执行文件路径周围的双引号(按照我的示例)。请注意,路径和可执行文件名称中都有空格。 – 2014-09-22 09:45:03

0

我得到的解决方案,我在这里张贴。这将是今后别人有所帮助:

try 
{ 
    string hely = @"C:\Program Files (x86)\FileZilla Server\FileZilla Server.xml"; 
    StreamWriter wr = new StreamWriter(hely, false); 
    wr.WriteLine("<FileZillaServer>"); 
    wr.WriteLine("  <Settings>"); 
    wr.WriteLine("  <Item name=\"Admin port\" type=\"numeric\">14147</Item>"); 
    wr.WriteLine(" </Settings>"); 
    wr.WriteLine(" <Groups />"); 
    wr.WriteLine(" <Users>"); 
    wr.WriteLine(" <User Name=\"test\">"); 
    wr.WriteLine("  <Option Name=\"Pass\">test</Option>"); 
    wr.WriteLine("  <Option Name=\"Group\"></Option>"); 
    wr.WriteLine("  <Option Name=\"Bypass server userlimit\">0</Option>"); 
    wr.WriteLine("  <Option Name=\"User Limit\">0</Option>"); 
    wr.WriteLine("  <Option Name=\"IP Limit\">0</Option>"); 
    wr.WriteLine("  <Option Name=\"Enabled\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"Comments\">test</Option>"); 
    wr.WriteLine("  <Option Name=\"ForceSsl\">0</Option>"); 
    wr.WriteLine(" <IpFilter>"); 
    wr.WriteLine("  <Disallowed />"); 
    wr.WriteLine("  <Allowed />"); 
    wr.WriteLine(" </IpFilter>"); 
    wr.WriteLine(" <Permissions>"); 
    wr.WriteLine("  <Permission Dir=\"D:\\FTP_Root\">"); 
    wr.WriteLine("  <Option Name=\"FileRead\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"FileWrite\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"FileDelete\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"FileAppend\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"DirCreate\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"DirDelete\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"DirList\">0</Option>"); 
    wr.WriteLine("  <Option Name=\"DirSubdirs\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"IsHome\">1</Option>"); 
    wr.WriteLine("  <Option Name=\"AutoCreate\">0</Option>"); 
    wr.WriteLine(" </Permission>"); 
    wr.WriteLine(" </Permissions>"); 
    wr.WriteLine("<SpeedLimits DlType=\"0\" DlLimit=\"10\" ServerDlLimitBypass=\"0\" UlType=\"0\" UlLimit=\"10\" ServerUlLimitBypass=\"0\">"); 
    wr.WriteLine("    <Download />"); 
    wr.WriteLine("   <Upload />"); 
    wr.WriteLine("  </SpeedLimits>"); 
    wr.WriteLine(" </User>"); 
    wr.WriteLine(" </Users>"); 
    wr.WriteLine("</FileZillaServer>"); 
    wr.Close(); 
    string pathtofilezilla = @"C:\Program Files (x86)\FileZilla Server"; 
    Process.Start("CMD.exe", "/C \"" + pathtofilezilla + "\\FileZilla Server.exe\" /reload-config"); 
} 
catch (Exception ex) 
{ 
    throw ex; 
} 
+1

这只是覆盖整个配置,删除以前存在的所有其他帐户。 – 2014-09-23 08:02:25

+0

这只是我提到的概念,你必须解析/序列化这个XML文件来创建新的节点。 – 2014-09-25 04:33:45

+0

@ShilpaSoni:那SFTP呢? – 2017-08-09 12:16:30