安全远程访问:SSH 客户端配置与管理实践
在网络安全日益重要的今天,安全远程访问成为了众多企业和管理员关注的焦点。SSH(Secure Shell)作为一种安全的网络协议,为远程管理提供了可靠的解决方案。本文将详细介绍 SSH 客户端的配置、管理客户端的设置、安全管理的执行以及基于 SSH 的安全 VPN 实现。
1. SSH 客户端配置
当 SSH 服务器搭建完成后,需要为远程管理员配置 SSH 客户端。以 SecureCRT 4.0 及以上版本为例,具体配置步骤如下:
1. 依次选择“开始”>“程序”>“SecureCRT”>“SecureCRT”。
2. 选择“文件”>“快速连接”。
3. 在“协议”字段选择“SSH2”。
4. 在“主机名”字段输入“11.30.11.21”。
5. 在“端口”字段输入“22”。
6. 在“用户名”字段输入正确的用户名,如“Shreya”。
7. 确保“保存会话”框被勾选。
8. 选择“连接”,使用适当的密码登录 SSH 服务器。
9. 会话建立后,选择“文件”>“断开连接”断开会话。
10. 选择“文件”>“连接”,并高亮显示“11.30.11.21”选项。
11. 右键单击“11.30.11.21”,然后选择“属性”。
12. 高亮显示“端口转发”部分。
完成上述设置后,可以添加本地端口转发选项:
| 步骤 | 操作内容 |
| — | — |
| 13 | 选择“添加”以显示“端口转发”选项。 |
| 14 | 在“名称”字段输入“Terminal Server”。 |
| 15 | 在“本地”子部分,确保“手动选择允许连接的本地 IP 地址”未被勾选。 |
| 16 | 在“本地”子部分的“端口”字段输入“3389”。 |
| 17 | 在“远程”子部分,确保“目标主机与 SSH 服务器不同”被勾选,并在“主机名”字段输入“10.1.0.100”。 |
| 18 | 在“远程”子部分的“端口”字段输入“3389”。 |
| 19 | 在“应用程序”子部分,可以留空或输入终端服务客户端的路径。若输入路径,将自动执行终端服务客户端;若留空,则需手动执行。 |
| 20 | 选择“确定”。 |
接下来设置 Linux VNC 服务器本地端口转发选项:
| 步骤 | 操作内容 |
| — | — |
| 21 | 选择“添加”以显示“端口转发”选项。 |
| 22 | 在“名称”字段输入“VNC Server”。 |
| 23 | 在“本地”子部分,确保“手动选择允许连接的本地 IP 地址”未被勾选。 |
| 24 | 在“本地”子部分的“端口”字段输入“5901”。 |
| 25 | 在“远程”子部分,确保“目标主机与 SSH 服务器不同”被勾选,并在“主机名”字段输入“10.1.0.150”。 |
| 26 | 在“远程”子部分的“端口”字段输入“5901”。 |
| 27 | 在“应用程序”子部分,可以留空或输入 VNC 客户端的路径。若输入路径,将自动执行 VNC 客户端;若留空,则需手动执行。 |
| 28 | 选择“确定”。 |
然后设置 pcAnywhere 本地端口转发选项:
| 步骤 | 操作内容 |
| — | — |
| 29 | 选择“添加”以显示“端口转发”选项。 |
| 30 | 在“名称”字段输入“pcAnywhere”。 |
| 31 | 在“本地”子部分,确保“手动选择允许连接的本地 IP 地址”未被勾选。 |
| 32 | 在“本地”子部分的“端口”字段输入“5631”。 |
| 33 | 在“远程”子部分,确保“目标主机与 SSH 服务器不同”被勾选,并在“主机名”字段输入“10.1.0.200”。 |
| 34 | 在“远程”子部分的“端口”字段输入“5631”。 |
| 35 | 在“应用程序”子部分,可以留空或输入 pcAnywhere 客户端的路径。若输入路径,将自动执行 pcAnywhere 客户端;若留空,则需手动执行。 |
| 36 | 选择“确定”。 |
由于 pcAnywhere 需要两个端口,还需添加第二个本地端口转发:
| 步骤 | 操作内容 |
| — | — |
| 37 | 选择“添加”以显示“端口转发”选项。 |
| 38 | 在“名称”字段输入“pcAnywhere2 Server”。 |
| 39 | 在“本地”子部分,确保“手动选择允许连接的本地 IP 地址”未被勾选。 |
| 40 | 在“本地”子部分的“端口”字段输入“5632”。 |
| 41 | 在“远程”子部分,确保“目标主机与 SSH 服务器不同”被勾选,并在“主机名”字段输入“10.1.0.200”。 |
| 42 | 在“远程”子部分的“端口”字段输入“5632”。 |
| 43 | 可将“应用程序”子部分留空。 |
| 44 | 选择“确定”。 |
mermaid 流程图如下:
graph LR
A[启动 SecureCRT] --> B[快速连接]
B --> C[选择 SSH2 协议]
C --> D[输入主机名 11.30.11.21]
D --> E[输入端口 22]
E --> F[输入用户名]
F --> G[勾选保存会话]
G --> H[连接并登录]
H --> I[断开会话]
I --> J[重新连接并选属性]
J --> K[高亮端口转发]
K --> L[添加终端服务端口转发]
L --> M[添加 VNC 端口转发]
M --> N[添加 pcAnywhere 端口转发]
N --> O[添加 pcAnywhere2 端口转发]
2. 管理客户端设置
管理客户端无需特殊配置。终端服务客户端、VNCviewer 和 pcAnywhere 客户端等都是独立的命令行客户端,可与 SSH 无缝配合使用。所有连接将本地定向到环回接口(即 127.0.0.1),通过 SSH 连接建立的本地端口转发,将连接转发到相应的服务器。
3. 执行安全管理
完成上述配置后,可以开始使用安全管理架构:
1. 执行 SecureCRT,连接并认证到 SSH 服务器。
2. 认证后,在命令行输入“netstat –an”验证 SSH 连接上的端口转发隧道。端口 3389、5631、5632 和 5901 应在环回地址上监听。
4. 不同服务的安全管理
4.1 Windows 终端服务与 SSH 安全管理
若要登录 Windows 终端服务器,可按以下步骤操作:
1. 依次选择“开始”>“程序”>“终端服务客户端”。
2. 在“服务器”字段输入“127.0.0.1”。
3. 选择“连接”。
当终端服务客户端连接到端口 3389 的环回地址时,SSH 连接将通过加密隧道将请求转发到 Windows 终端服务器。连接成功后,会显示登录界面并提示输入密码。登录后,可从以下网址加载额外的复制粘贴工具:
www.microsoft.com/windows2000/techinfo/reskit/tools/hotfixes/rdpclip - o.asp
加载工具后,可通过 SSH 隧道在终端服务会话和本地机器之间拖放文件,实现远程管理和文件传输。
4.2 VNC 与 SSH 安全管理
若要登录 Linux VNC 服务器,可按以下步骤操作:
1. 切换到 VNCviewer 程序目录(vncviewer.exe)。
2. 输入命令“vncviewer localhost:1”,此命令将端口 5901 的 vncviewer 客户端连接到本地主机。
3. 选择“确定”。
当 vncviewer 连接到端口 5901 的环回地址时,SSH 连接将通过加密隧道将请求转发到 Linux VNC 服务器。连接成功后,会显示登录界面并提示输入会话密码。输入正确密码后,即可像在本地操作一样访问操作系统。
4.3 pcAnywhere 与 SSH 安全管理
若要登录 pcAnywhere 服务器,由于其使用 TCP 端口 5631 和 5632,且 UDP 端口 5632 无法通过 SSH 会话隧道,因此需要在 pcAnywhere 服务器和客户端上禁用 UDP 端口 5632,具体步骤如下:
1. 打开注册表编辑器,依次选择“开始”>“运行”>“regedit.exe”。
2. 浏览到注册表键:“HKLM\SOFTWARE\Symantec\pcANYWHERE\CurrentVersion\System”。
3. 添加一个 DWORD 值,内容如下:
- 值名称:TCPIPConnectIfUnknown
- 值数据:1
4. 在 pcAnywhere 服务器和客户端上进行注册表更改后,重启两台机器。
5. 在 pcAnywhere 客户端机器上,打开 pcAnywhere,依次选择“开始”>“程序”>“pcAnywhere”。
6. 选择“远程”按钮。
7. 选择“文件”>“新建”。
8. 选择“设置”选项卡。
9. 在“要控制的网络主机 PC 或 IP 地址”选项中输入“127.0.0.1”。
10. 选择“确定”。
11. 将会话命名为“pcAnywhere Server”。
12. 双击新的 pcAnywhere 图标,即可通过安全 SSH 会话显示 pcAnywhere 连接。
当 pcAnywhere 客户端连接到端口 5631 和 5632 的环回地址时,SSH 连接将通过加密隧道将请求转发到 pcAnywhere 服务器。连接成功后,会显示登录界面并提示输入密码。输入正确密码后,即可像在本地操作一样访问操作系统。
通过以上步骤,我们可以利用 SSH 实现不同服务的安全远程访问,为网络管理提供了强大的支持。在实际应用中,可根据具体需求灵活配置和使用这些功能。
5. 基于 SSH 的安全 VPN(PPP over SSH)
在网络通信中,虚拟专用网络(VPN)为用户提供了安全的远程访问解决方案。而基于 SSH 的 PPP over SSH 作为一种独特的 VPN 实现方式,具有众多优势。
PPP over SSH 利用 PPP(Point - to - Point Protocol)协议,通过 SSH 连接构建一个功能齐全的 VPN 解决方案。与传统的 VPN 实现(如 IPSec 实现)相比,它具有以下优点:
- 强大的加密功能:采用 3DES 加密,保障数据传输的安全性。
- 提供 PPP 接入:支持点对点的网络连接。
- 多隧道能力:能够在两个不同网络之间建立多个隧道。
- 低成本:无需购买昂贵的硬件设备或软件许可证。
- 低支持要求:对技术支持的需求较低。
- 适应性强:可以在不进行大规模网络架构调整的情况下,适应现有的网络环境。
这些优点使得 PPP over SSH 成为许多中小型网络理想的 VPN 解决方案。
5.1 PPP over SSH 架构
在典型的 PPP over SSH 架构中,SSH 服务器同时充当 PPP 服务器,这里以运行 OpenSSH 的 Linux RedHat 8.0 服务器为例。客户端是一台普通的 RedHat 8.0 客户端机器,无需安装或运行特殊服务。防火墙只需设置一条允许端口 22 连接到 SSH/PPP 服务器的规则。一旦 SSH/PPP 客户端建立连接,就可以在内部网络中创建一个 VPN。
graph LR
A[客户端 72.12.8.15] -->|Internet| B[防火墙]
B -->|端口 22| C[SSH/PPP 服务器 11.30.11.21]
C -->|内部网络| D[内部网络资源]
5.2 服务器端配置
5.2.1 确保 PPP 守护进程运行
首先,需要确保 SSH 服务器上的 PPP 守护进程(pppd)已加载并正常工作。对于 Linux Redhat 8.0 及更高版本,pppd 通常可以直接使用。可以在服务器上执行以下命令进行验证:
#cd /usr/sbin
#pppd
如果看到类似以下的输出,说明 PPP 守护进程正在正常运行:
~ }#_!}!}!} }4}”}&} } } } }%}&}”-1L}’}”}(}”e”~~ }#_!}!}!} }4}”}&} } } }
L}’}”}(}”e”~~ }#_!}!}!} }4}”}&} } } } }%}&}”-1L}’}”}(}”e”~~ }#_!}!}!}
5.2.2 配置 VPN 用户和 sudo
为了确保远程 VPN 用户不会拥有对 PPP/SSH 服务器的完全根访问权限,通常会创建一个单独的用户账户(如 vpnmonkey)来执行 PPP 守护进程。需要进行以下配置:
1. 确保 vpnmonkey 账户的公钥文件(identity.pub)位于 SSH/PPP 服务器的授权密钥文件中(/home/vpnmonkey/.ssh/authorized_keys)。
2. 编辑 SSH/PPP 服务器上的 sudoers 文件(/etc/sudoers),允许 vpnmonkey 启动 PPP 守护进程。sudoers 文件的内容应如下所示:
Cmnd_Alias VPN=/usr/sbin/pppd
vpnmonkey ALL=NOPASSWD: VPN
- 验证 su 和 sudo 是否配置正确,在服务器上执行以下命令:
#su vpnmonkey
#sudo /usr/sbin/pppd noauth
如果一切正常,会看到 PPP 守护进程输出的信息,表明其正在正常运行。
5.3 客户端脚本配置
需要在 VPN 客户端上配置一个脚本,以使用 SSH 进行 PPP 连接。该脚本最初由 www.linuxorg.org 的作者创建,在编辑脚本之前,需要根据架构自定义一些变量。假设服务器主机名为 ssh.ppp.server.com,服务器用户名为 vpnmonkey,服务器 IP 地址为 11.30.11.21,客户端 IP 地址为 72.12.8.15。以下是脚本内容:
#!/bin/sh
# /usr/local/bin/vpn-pppssh
#
# This script initiates a ppp-ssh vpn connection.
# see the VPN PPP-SSH HOWTO on http://www.linuxdoc.org for more
# information.
#
# revision history:
# 1.6 11-Nov-1996 miquels@cistron.nl
# 1.7 20-Dec-1999 bart@jukie.net
# 2.0 16-May-2001 bronson@trestle.com
#
# You will need to change these variables...
#
# The host name or IP address of the SSH server that we are
# sending the connection request to:
SERVER_HOSTNAME=ssh.ppp.server.com
# The username on the VPN server that will run the tunnel.
# For security reasons, this should NOT be root. (Any user
# that can use PPP can intitiate the connection on the client)
SERVER_USERNAME=vpnmonkey
# The VPN network interface on the server should use this address:
SERVER_IFIPADDR=11.30.11.21
# ...and on the client, this address:
CLIENT_IFIPADDR=72.12.8.15
# This tells ssh to use unprivileged high ports, even though it’s
# running as root. This way, you don’t have to punch custom holes
# through your firewall.
LOCAL_SSH_OPTS=”-P”
#
# The rest of this file should not need to be changed.
#
PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11/:
#
# required commands...
#
PPPD=/usr/sbin/pppd
SSH=/usr/bin/ssh
if ! test -f $PPPD ; then echo “can’t find $PPPD”; exit 3; fi
if ! test -f $SSH ; then echo “can’t find $SSH”; exit 4; fi
case “$1” in
start)
# echo -n “Starting vpn to $SERVER_HOSTNAME: “
${PPPD} updetach noauth passive pty “${SSH} ${LOCAL_SSH_OPTS}
${SERVER_HOSTNAME} -l${SERVER_USERNAME} -o Batchmode=yes sudo ${PPPD}
nodetach notty noauth” ipparam vpn ${CLIENT_IFIPADDR}:${SERVER_IFIPADDR}
# echo “connected.”
;;
stop)
# echo -n “Stopping vpn to $SERVER_HOSTNAME: “
PID=`ps ax | grep “${SSH} ${LOCAL_SSH_OPTS} ${SERVER_HOSTNAME} -
l${SERVER_USERNAME} -o” | grep -v ‘ passive ‘ | grep -v ‘grep ‘ | awk
‘{print $1}’`
if [ “${PID}” != “” ]; then
kill $PID
echo “disconnected.”
else
echo “Failed to find PID for the connection”
fi
;;
config)
echo “SERVER_HOSTNAME=$SERVER_HOSTNAME”
echo “SERVER_USERNAME=$SERVER_USERNAME”
echo “SERVER_IFIPADDR=$SERVER_IFIPADDR”
echo “CLIENT_IFIPADDR=$CLIENT_IFIPADDR”
;;
*)
echo “Usage: vpn {start|stop|config}”
exit 1
;;
esac
exit 0
该脚本支持以下操作:
| 操作 | 说明 |
| — | — |
| start | 启动 VPN 连接 |
| stop | 停止 VPN 连接 |
| config | 显示配置信息 |
通过以上步骤,我们完成了基于 SSH 的安全 VPN(PPP over SSH)的配置。无论是 SSH 客户端的配置、管理客户端的设置,还是不同服务的安全管理以及基于 SSH 的 VPN 实现,都为我们提供了全面而安全的远程访问解决方案。在实际的网络环境中,我们可以根据具体的需求和场景,灵活运用这些技术,保障网络通信的安全性和可靠性。
超级会员免费看
1358

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



