SSH在跨系统文件访问中的应用与配置
1. 架构需求概述
从架构角度来看,关键需求相对较少。由于工程部门位于内部网络,而Windows文件服务器也处于该网络中,默认情况下每个客户端都能够访问该服务器。所有客户端需要使用OpenSSH SFTP客户端来访问SSH服务器上的SFTP子系统,或者使用smbclient来访问端口转发的SMB连接。
2. 架构图示
以下是该架构的简单mermaid流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Linux Clients):::process -->|SFTP或SMB| B(Windows File Server):::process
B -->|SSH Server| C(INTERNAL NETWORK):::process
A -->|SSH Server| C
3. 配置步骤
3.1 SSH服务器配置
- 安装OpenSSH :在Windows文件服务器上安装OpenSSH(安装过程可参考相关资料)。该服务器有两个分区,分区1用于存放操作系统文件,分区2是一个100GB的磁盘,挂载为D盘。
-
挂载D分区
:
-
打开
c:\Program Files\OpenSSH\etc\路径下的passwd文件。 -
修改
passwd文件中每个用户的默认目录,输入/cgydrive/d,示例如下:
-
打开
administrator::::administrator-account:/cygdrive/d:/ssh/switch.exe
kusum::520::Kusum’s-Account:/cygdrive/d:/ssh/switch.exe
sudhanshu::521::Sudhanshu’s-Account:/cygdrive/d:/ssh/switch.exe
neeraja::522::Neeraja’s-Account:/cygdrive/d:/ssh/switch.exe
kanchan::523::Kanchan’s-Account:/cygdrive/d:/ssh/switch.exe
jignesh::524::Jignesh’s-Account:/cygdrive/d:/ssh/switch.exe
anand::525::Anand’s-Account:/cygdrive/d:/ssh/switch.exe
amiee::526::Amiee’s-Account:/cygdrive/d:/ssh/switch.exe
amit::527::Amit’s-Account:/cygdrive/d:/ssh/switch.exe
katie::528::Katie’s-Account:/cygdrive/d:/ssh/switch.exe
rohan::529::Rohan’s-Account:/cygdrive/d:/ssh/switch.exe
shreya::530::Shreya’s-Account:/cygdrive/d:/ssh/switch.exe
shashi::531::Shashi’s-Account:/cygdrive/d:/ssh/switch.exe
prabha::532::Prabha’s-Account:/cygdrive/d:/ssh/switch.exe
chandradhar::533::Chandradhar’s-Account:/cygdrive/d:/ssh/switch.exe
3. 使用以下命令停止并重启OpenSSH服务:
c:\net stop “OpenSSH Server”
c:\net start “OpenSSH Server”
此时,Windows文件服务器上运行着OpenSSH服务器,工程组的所有用户都可以访问D分区。
3.2 SSH客户端配置
在Red Hat Linux工作站上配置smbclient和OpenSSH客户端。由于Red Hat Linux 8.0操作系统默认包含smbclient和OpenSSH客户端,无需进行特殊安装。Linux客户端可以通过两种方式安全地访问Windows文件服务器:SFTP或带端口转发的SMB。
使用SFTP连接
:
1. 切换到
/usr/bin
目录,该目录包含SFTP客户端,命令如下:
#cd /usr/bin
- 输入适当的SFTP命令连接到端口22上的SSH服务器,提示时输入密码,示例如下:
#sftp administrator@172.16.1.100
administrator@172.16.1.100’s password:
- 输入正确密码后,将出现SFTP提示符,可通过安全通道从Windows文件服务器上传和下载文件,示例如下:
sftp>
使用smbclient和端口转发连接
:
1. 切换到
/usr/bin
目录,该目录包含SSH客户端,命令如下:
#cd /usr/bin
- 输入适当的SSH命令连接到端口22上的SSH服务器,并确保对所需的SMB端口进行端口转发(本地工作站和远程主机的端口445,若使用NT 4.0或更低版本则为139),提示时输入密码,示例如下:
#ssh administrator@172.16.1.100 -L 445:172.16.1.100:445
administrator@172.16.1.100’s password:
-
输入正确密码后,将在Windows文件服务器上获得有效的SSH提示符(即之前输入的cygdrive中的
d:\提示符),同时在本地Linux工作站上启用端口445到远程Windows文件服务器端口445的端口转发会话。 - 启用SSH会话和端口转发条目后,在Linux客户端上打开一个新的shell,输入适当的smbclient语法连接到回环接口(127.0.0.1),该接口将通过加密的SSH隧道端口转发到远程SMB服务(Windows文件服务器的文件传输协议),示例如下:
#smbclient \\\\127.0.0.1\\D -U administrator –p 445
- 输入正确密码后,将获得一个SMB提示符,可通过加密的SSH隧道在Windows文件服务器上传输文件,示例如下:
smb: \>
4. 结果检查
完成设置后,相关业务需求均能得到满足,具体如下表所示:
| 业务需求 | 结果 |
| — | — |
| 所有SMB流量必须使用3DES或更高版本进行加密 | OpenSSH服务器和客户端始终可以支持3DES或更高版本的加密 |
| SSH客户端必须仅支持Red Hat Linux | 所有Red Hat Linux工作站都安装了OpenSSH,默认包含SSH和SFTP等实用工具,并且所有Red Hat Linux机器上都提供smbclient |
| Windows服务器只能支持SMB | Windows文件服务器除了安装了OpenSSH外未进行其他修改,这不会影响SMB网络协议 |
SSH在跨系统文件访问中的应用与配置
5. SSH的多场景应用及优势
SSH具有广泛的应用场景,能够解决多种安全和连接问题。以下是对其不同应用场景的详细介绍:
5.1 安全远程访问
SSH自版本2开发以来,就为安全远程访问提供了强大的支持。它可以替代传统的不安全远程访问协议,如Telnet,通过加密通信确保数据在传输过程中的安全性,防止数据被窃取或篡改。
5.2 安全无线连接
随着无线网络的普及,其带来的安全问题也日益突出。尽管SSH的开发早于无线网络的出现,但由于其灵活性,利用SSH实现安全的无线连接变得相对容易。它能够在不安全的无线网络环境中建立加密隧道,保护数据传输的安全。
5.3 跨系统安全文件访问
SSH不仅适用于Unix系统,还能在Windows和Unix系统之间实现安全的文件共享。不同操作系统提供的文件共享协议(如SMB和NFS)往往缺乏足够的安全性,而SSH能够弥补这一不足,在不同系统之间建立可靠的文件共享通道,并提供安全保障。
SSH的优势可以用“All - everything”来形容,它能够提供安全远程访问、安全SOCKS、安全Telnet、安全RSH/Rlogin、安全备份、安全FTP、安全文件传输(SMB/NFS)、安全认证、安全管理、安全无线、安全电子邮件和安全Web浏览等多种功能,在企业网络中具有不可替代的地位。
6. SSH配置选项详解
SSH的配置涉及众多选项,这些选项可以根据不同的需求进行调整,以实现最佳的安全和性能。以下是一些常见配置选项的详细介绍:
| 配置选项 | 描述 |
|---|---|
Authentication
| 指定认证方法,如用户名/密码、公钥认证等 |
Ciphers
| 选择加密算法,确保数据传输的安全性 |
Port
| 指定连接端口,默认端口为22 |
AllowUsers
| 允许访问的用户列表,可进行用户权限控制 |
DenyUsers
| 禁止访问的用户列表 |
以下是一个使用mermaid绘制的配置选项关系流程图:
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Authentication):::process -->|影响| B(Security):::process
C(Ciphers):::process -->|影响| B
D(Port):::process -->|影响| E(Connectivity):::process
F(AllowUsers):::process -->|影响| G(Access Control):::process
H(DenyUsers):::process -->|影响| G
7. 不同类型客户端和服务器的配置要点
7.1 客户端配置要点
-
命令行客户端
:配置文件包含多个部分,如
Authentication、Crypto、Network等。可以通过设置AllowedAuthentication指定允许的认证方法,通过Ciphers选择加密算法。同时,还可以使用各种命令行开关进行灵活配置,如-c指定加密类型,-i指定公钥文件等。 - GUI客户端 :不同的GUI客户端(如SecureCRT、PuTTY等)具有各自的配置界面,但通常都需要设置主机名、端口、认证方式等基本信息。以SecureCRT为例,需要在配置中指定主机名、端口、认证方法、加密算法等。
7.2 服务器配置要点
-
OpenSSH服务器
:配置文件
sshd_config包含多个关键选项,如ListenAddress指定监听地址,Port指定监听端口,PasswordAuthentication控制是否允许密码认证,PubkeyAuthentication控制是否允许公钥认证等。 -
SSH Communications服务器
:配置文件
sshd2_config根据不同的操作系统(Unix或Windows)有不同的配置选项。在Unix系统中,需要设置AllowAgentForwarding、AllowedAuthentications等;在Windows系统中,需要设置Accessible Directories、AllowedAuthentications等。 -
VShell SSH服务器
:配置文件包含
Access Control、Authentication、Connection Filters等多个部分,可通过设置Algorithms选择算法,Cipher选择加密方式等。
8. SSH的优化建议
为了充分发挥SSH的性能和安全性,以下是一些优化建议:
-
认证优化
:采用多因素认证,如公钥认证结合密码认证,提高认证的安全性。同时,合理设置认证重试次数和失败超时时间,防止暴力破解。
-
加密优化
:选择高强度的加密算法和MAC(Message Authentication Codes),确保数据传输的机密性和完整性。定期更新加密密钥,提高安全性。
-
端口转发优化
:合理配置端口转发规则,避免不必要的端口开放。对于动态端口转发,使用SOCKS代理服务器时,要进行严格的访问控制。
-
性能优化
:启用压缩功能可以减少数据传输量,提高传输速度。同时,合理设置连接超时时间和最大连接数,避免资源浪费。
通过以上的配置和优化,SSH能够在不同的场景下提供安全、高效的服务,满足企业和个人的各种需求。无论是作为Telnet的替代工具,还是用于保护网络架构的大部分安全,SSH都具有很强的灵活性和适用性。
超级会员免费看
9184

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



