深入解析SFTP:多种工具的应用与比较
在网络技术不断发展的今天,安全文件传输协议(SFTP)在数据传输和管理中发挥着重要作用。本文将详细探讨OpenSSH、VanDyke Software VShell和SSH Communications’ SSH Server这三种工具在SFTP方面的应用、特点及操作方法。
1. SFTP安全风险与访问控制
SFTP客户端在操作系统上可能存在安全风险。它可能通过系统的符号链接或操作系统本身赋予的权限,访问超出预期的SFTP文件夹。为了保障数据安全,无论SSH用于管理还是文件共享,都需要实施文件访问控制,将用户限制在其主目录或指定的SFTP文件夹内。
要设置合适的文件访问控制,应使用操作系统工具而非SSH工具。例如,Unix系统可以使用
chmod
命令,Windows系统可以使用
Cacls.exe
工具来为单个文件和文件夹设置权限。然而,这一过程极具挑战性,因为需要保护整个操作系统的所有敏感文件。而且,像
/etc/passwd
这样的文件,需要对系统上的所有账户(包括根级账户和普通用户账户)可读,这并非理想情况。
OpenSSH在限制SFTP访问方面功能有限,除了依靠操作系统的访问控制外,它对于低级别或非根/非管理员级别的用户进行一般文件共享来说,只是一个中等水平的解决方案。由于文件共享服务器需要为多个用户提供访问权限,同时保护操作系统不受这些用户的影响,使用OpenSSH的SFTP子系统会是一个繁琐的过程。
2. OpenSSH用户授权
在所有OpenSSH安装中,操作系统上的所有用户(如
/etc/passwd
文件中的用户列表)默认都可以登录服务,除非被明确拒绝。通过OpenSSH,可以允许特定账户登录,也可以拒绝某些账户的访问,即使这些账户在
/etc/passwd
文件中存在。这一限制使OpenSSH架构能够将具有SSH/SFTP访问权限的用户限制在特定的账户列表中,这个列表可以包含
/etc/passwd
中的所有账户(默认情况),也可以只是部分账户。
举个例子,如果有500个账户可以访问运行OpenSSH的机器(可能通过NIS架构),但只有80个账户需要访问操作系统本身,OpenSSH可以通过指定授权登录的账户名和/或账户变量来允许或拒绝SSH/SFTP访问。
如果SFTP子系统的目的是允许工程部门的所有用户访问、上传和下载操作系统中的文件,将“Engineering”组设置为唯一可以使用SSH或SFTP的组是一个相对简单的过程。此外,如果工程部门的账户只需要访问其主目录,而不将SFTP子系统用作文件服务器,而是作为SSH终端访问的补充工具,那么OpenSSH是一个不错的选择。
例如,工程部门经常需要在主目录之间传输编译后的二进制文件、源代码或配置文件。如果他们使用SSH进行安全的终端访问,使用NFS、FTP或远程复制(RCP)进行文件传输将适得其反,因为这些协议的不安全性会抵消SSH加密连接带来的安全优势。在这种情况下,OpenSSH的SFTP子系统是NFS、FTP和RCP的绝佳替代方案。
3. OpenSSH在Windows上的应用与Cygdrive
在Windows上使用OpenSSH与在Unix上使用类似,它在管理和授权系统用户方面同样适用。但由于Windows操作系统中敏感文件和目录的权限问题,不建议使用OpenSSH在Windows上进行文件传输。
需要注意的是,在Windows上使用
cygdrive
作为SFTP根目录。如果要指定一个非默认的SSH或SFTP子系统根目录,就需要使用
cygdrive
。例如,在具有C、D和E驱动器的Windows操作系统中,如果希望将E盘作为根目录,
Program Files\OpenSSH\bin
中的
passwd
文件应如下所示:
Administrator::/cygdrive/e::
虽然所有SFTP用户会被重定向到E盘,但他们并不局限于此。这意味着用户的SFTP shell将从E盘开始,如果他们使用SFTP客户端指定要访问C盘,只要他们具有相应的NTFS权限,就可以访问。这也是OpenSSH Windows版本的作者强调它仅应用于管理目的的原因之一,因为文件系统的安全性是由操作系统的原生NTFS权限而非OpenSSH的SFTP子系统来强制执行的。
4. VanDyke Software VShell的SFTP应用
VanDyke的VShell SSH服务器是使用SFTP子系统的优秀解决方案。与OpenSSH的SFTP子系统一样,在VShell SSH服务器上启用SFTP子系统无需额外步骤。但与OpenSSH不同的是,VShell没有直接的SFTP服务器开关,而是通过两种方法来启用或禁用它。默认情况下,SFTP子系统是启用的,允许所有人无限制访问。要禁用它,需要配置两个项目:访问控制和SFTP选项。可以在访问控制中禁用特定用户的SFTP访问,并使用SFTP选项限制对SFTP文件夹的访问。这两个选项并非真正禁用SFTP子系统,而是将其限制在特定用户范围内,为配置VShell的SFTP子系统提供了更精细的控制。
要验证VShell的SFTP子系统是否已启用,请完成以下步骤:
1. 点击“开始”➪“程序”➪“VShell”➪“VShell”。
2. 高亮显示“访问控制”部分。
3. 为相应的账户选择“SFTP”行中的“允许”复选框。
4. 点击“应用”。
5. 高亮显示“SFTP”部分。
6. 确保相应的用户能够访问适当的账户。默认情况下,允许所有人完全访问所有文件和目录。
7. 点击“应用”。
4.1 VShell用于管理目的
使用任何SFTP客户端(如VanDyke Software的SecureFX或SSH Communications的SSH客户端),都可以安全地连接到SFTP服务器下载文件。例如,要从IP地址为172.16.6.12的SFTP服务器复制名为
Neeraja.txt
的文件,使用SSH Communications的SSH客户端可按以下步骤操作:
1. 点击“开始”➪“程序”➪“SSH Communications”➪“安全文件传输客户端”。
2. 选择“快速连接”。
3. 在“主机名”字段中输入172.16.6.12。
4. 在“用户名”字段中输入相应的账户名。
5. 在“端口号”字段中指定端口号,默认值为22。
6. 选择“密码”作为认证方法。
7. 点击“连接”。
8. 当SFTP客户端提示时,输入正确的密码。
9. 现在,您可以使用类似Windows资源管理器的客户端将文件拖放到SFTP服务器上。通过拖放、复制粘贴或菜单栏选项从SFTP客户端传输到SFTP服务器的所有文件都是加密的。
同样,要上传文件到SSH服务器,也可以使用拖放、复制粘贴或菜单栏选项。与FTP GUI客户端类似,VShell的GUI SFTP客户端可以通过加密会话在客户端本地目录和SSH服务器之间下载或上传文件。因此,VShell的SFTP服务器是大多数组织进行一般管理的理想解决方案。管理员级别的用户不仅可以登录SSH服务器进行命令行访问,还可以使用SFTP子系统安全、轻松地传输重要和敏感的文件及目录。
4.2 VShell用于文件共享
与OpenSSH一样,VShell使用操作系统账户来提供与SSH互补的SFTP子系统功能。即使某个账户仅用于SFTP,根据NTFS权限,该账户仍可能有权访问、修改或读取操作系统上的敏感文件,如
\winnt
、
\winnt\system32
和
\winnt\repair
。
如果VShell SFTP服务器仅用于文件共享,由于所有VShell账户都是操作系统账户,它们仍然有权访问操作系统的其他部分。在文件服务器场景中,可能不希望将操作系统目录或整个目录结构暴露给SFTP访问,而是希望仅暴露一个根文件夹用于组织范围内的文件共享。例如,可能不希望所有用户下载
\winnt\repair\sam
的副本,而是希望他们仅下载指定目录(如
d:\share
)中的文件。
在这种情况下,可以使用VShell的SFTP访问控制功能。要允许系统上的所有账户仅访问
d:\share
文件夹(该文件夹可作为公司文件服务器的根目录),请完成以下步骤:
1. 点击“开始”➪“程序”➪“VShell”➪“VShell”。
2. 高亮显示“SFTP”部分。
3. 在“SFTP选项”下,选择“添加”。
4. 在“SFTP根”字段中输入
d:\share
,或使用“…”按钮浏览到该目录。
5. 在“别名”字段中输入
CorpFileServer
。
6. 点击右侧的“添加”。
7. 添加“Everyone”组。
8. 点击“确定”。
9. 点击“应用”。
现在,操作系统或域中的所有账户都可以通过SFTP访问
D:\share
目录。为确保禁止对操作系统其他部分的访问,请完成以下步骤:
1. 高亮显示“SFTP”部分中的“
”选项并选择“编辑”。
2. 删除所有账户,包括“Everyone”和其他存在的账户。
3. 输入希望提供对系统完全SFTP访问权限的账户(如管理员账户)。如果不需要添加任何账户,点击“确定”。
4. 点击“应用”。
此时,除管理员账户外,其他账户都没有无限制的访问权限。而且,系统或域中的每个其他账户只能访问
D:\share
目录,无论其NTFS权限如何。在使用SSH或SFTP子系统时,VShell的访问控制列表会覆盖VShell服务器上的NTFS权限。
此外,VShell还可以允许或限制特定账户对SFTP子系统的访问。例如,如果希望所有人仅能通过SFTP子系统将SSH服务器用作公司文件服务器,而禁止命令行或端口转发访问,可以通过以下步骤轻松设置:
1. 选择“访问控制”部分。
2. 点击“添加”。
3. 选择“Everyone”组并点击“确定”。
4. 保持“Everyone”组高亮显示,选择“登录”和“SFTP”作为允许的权限。
5. 保持“Everyone”组高亮显示,在“拒绝”权限下选择“Shell”、“远程执行”、“端口转发”和“远程端口转发”。
6. 点击“应用”。
通过这种配置,操作系统或域中的所有用户只能与公司文件服务器安全地传输文件,而管理员或其他等效账户仍可以完全访问VShell服务器和底层操作系统。
由于VShell能够使用SFTP将操作系统账户限制在特定目录中,而无需依赖NTFS权限,因此它是所有用户进行一般文件共享或公司文件服务器的优秀替代方案。实际上,将VShell的SSH服务器用作公司文件服务器是一个绝佳的解决方案,因为它具备以下能力:
- FTP/Windows资源管理器类型的GUI访问
- 拖放和复制粘贴功能
- 易于维护文件系统安全
- 无需NTFS权限,确保操作系统和其他目录的完全安全
- 加密
- 安全
对于需要为数百个账户提供访问权限,同时又不允许访问操作系统本身的文件共享服务器来说,使用VanDyke Software的SFTP子系统提供了一个简单、直接且非常灵活的解决方案。
4.3 VShell用户授权
通常,VShell安装允许操作系统上的所有用户登录服务,这是默认设置。但通过VShell,可以拒绝特定账户的SSH/SFTP访问,即使这些账户在系统上存在。具有访问权限的特定用户列表可以包括所有账户(默认情况),也可以只是部分账户。
例如,假设有500个账户可以访问运行VShell的机器(可能通过域架构),但只有72个账户需要访问操作系统本身。VShell可以通过指定授权登录的账户名和/或账户变量来允许或拒绝SSH/SFTP访问。如果SFTP子系统的目的是允许工程部门的所有用户访问、上传和下载操作系统中的文件,将“Engineering”组设置为唯一可以使用SSH或SFTP的组是一个相对简单的过程。此外,如果工程部门的账户只需要访问
d:\share
目录,VShell是一个不错的解决方案。
例如,工程部门需要在
d:\share
目录之间传输编译后的二进制文件、源代码或配置文件。如果他们使用SSH进行安全的终端访问,使用SMB或FTP进行文件传输将适得其反,因为这些协议的不安全性会抵消SSH加密连接带来的安全优势。
5. SSH Communications’ SSH Server的SFTP应用
SSH Communications’ SSH Server也是使用SFTP子系统的优秀解决方案。在该服务器上启用SFTP子系统无需额外步骤,默认情况下,SFTP子系统是启用的。要验证其是否已启用,请完成以下步骤:
1. 点击“开始”➪“程序”➪“SSH Secure Shell Server”➪“配置”。
2. 高亮显示“SFTP服务器”。
3. 确保启用了适当的目录,如用户的主目录。
4. 点击“应用”。
5.1 SSH Communications’ SSH Server用于管理目的
使用任何SFTP客户端(如VanDyke Software的SecureFX或SSH Communications的SSH客户端),都可以安全地连接到SFTP服务器下载文件。例如,要从IP地址为172.16.19.47的SFTP服务器复制名为
Belwa.txt
的文件,使用SSH Communications的SSH客户端可按以下步骤操作:
1. 点击“开始”➪“程序”➪“SSH Communications”➪“安全文件传输客户端”。
2. 选择“快速连接”。
3. 在“主机名”字段中输入172.16.19.47。
4. 在“用户名”字段中输入相应的账户名。
5. 在“端口号”字段中指定端口号,默认值为22。
6. 选择“密码”作为认证方法。
7. 点击“连接”。
8. 当SFTP客户端提示时,输入正确的密码。
此时,您可以使用类似Windows资源管理器的客户端在SFTP服务器和本地目录之间拖放文件。通过拖放、复制粘贴或菜单栏选项从SFTP客户端传输到SFTP服务器的所有文件都是加密的。同样,要上传文件到SSH服务器,也可以使用这些操作方式。
与FTP GUI客户端类似,SSH Communications’ SSH Server的GUI SFTP客户端可以通过加密会话在客户端本地目录和SSH服务器之间下载或上传文件。因此,该服务器是大多数组织进行一般管理的强大替代方案。管理员级别的用户不仅可以登录SSH服务器进行命令行访问,还可以使用SFTP子系统安全、轻松地传输重要和敏感的文件及目录。
6. 三种工具的比较
为了更清晰地了解OpenSSH、VanDyke Software VShell和SSH Communications’ SSH Server在SFTP应用方面的差异,下面通过表格进行比较:
| 工具 | 启用SFTP子系统 | 访问控制 | 文件共享能力 | 用户授权 | 适用场景 |
| — | — | — | — | — | — |
| OpenSSH | 无额外步骤 | 依赖操作系统工具,较繁琐 | 对低级别或非根/非管理员用户一般,需结合操作系统权限 | 可指定账户访问 | 管理和特定用户访问 |
| VanDyke Software VShell | 无需额外步骤,通过两种方法配置 | 可精细控制,覆盖NTFS权限 | 优秀,可限制账户到特定目录 | 可灵活指定账户或组访问 | 一般文件共享和公司文件服务器 |
| SSH Communications’ SSH Server | 默认启用,简单验证 | 可确保特定目录访问 | 强,可安全传输文件 | 可指定账户访问 | 一般管理和文件传输 |
7. 总结与建议
在选择合适的SFTP工具时,需要根据具体的使用场景和需求来决定。
如果主要用于管理目的,如管理员进行命令行访问和文件传输,且对操作系统权限管理有一定了解,OpenSSH和SSH Communications’ SSH Server都是不错的选择。OpenSSH在Unix系统上使用广泛,而SSH Communications’ SSH Server提供了简单的操作和安全的文件传输功能。
如果是用于公司范围内的文件共享,需要对大量用户进行精细的访问控制,并且希望简化文件系统安全管理,VanDyke Software VShell是最佳选择。它能够将用户限制在特定目录,无需依赖NTFS权限,提供了安全、便捷的文件共享解决方案。
以下是一个简单的选择流程图:
graph LR
A[选择SFTP工具] --> B{主要用途}
B --> |管理| C{系统类型}
C --> |Unix| D(OpenSSH)
C --> |Windows| E(SSH Communications’ SSH Server)
B --> |文件共享| F{用户数量和控制需求}
F --> |大量用户,精细控制| G(VanDyke Software VShell)
F --> |少量用户,简单控制| H(OpenSSH或SSH Communications’ SSH Server)
总之,不同的工具在SFTP应用中各有优劣,根据实际情况合理选择,才能充分发挥其优势,保障文件传输的安全和高效。
超级会员免费看
53

被折叠的 条评论
为什么被折叠?



