新闻资讯

如何使用 SSH 隧道配置远程设备的访问权限

2025-02-23

使用 SSH 隧道配置远程设备的访问权限,关键在于明确本地和远程设备的网络信息,以及掌握正确的端口转发命令。通过建立 SSH 连接,利用本地端口转发、远程端口转发或动态端口转发,将本地与远程设备的特定端口进行映射,从而实现安全访问。若处于内网环境,还可借助花生壳等工具完成内网穿透。以下将详细介绍配置方法及相关要点。

一、SSH 隧道基础
SSH 隧道概念
SSH(Secure Shell)隧道是一种基于 SSH 协议构建的安全加密通道,主要用于在网络中安全地传输数据。它能够将不安全的网络连接转化为安全连接,有效防止数据被窃听、篡改以及遭受中间人攻击。SSH 隧道存在多种类型,常见的有本地端口转发、远程端口转发和动态端口转发,每种类型都适用于不同的应用场景。
SSH 隧道原理
1.本地端口转发:本地端口转发允许将本地计算机上的某个端口与远程服务器上的目标端口进行关联。具体过程为,客户端先与远程服务器建立 SSH 连接,随后在本地监听指定端口。当有数据请求到达本地指定端口时,这些数据会通过 SSH 隧道被转发至远程服务器,再由远程服务器将数据转发到目标主机的目标端口。例如,执行命令ssh -L 8080:localhost:80 user@remote-server,此命令表示将本地的 8080 端口与远程服务器remote-server上的localhost:80端口进行映射。当本地有应用程序访问 8080 端口时,数据会通过 SSH 隧道发送到远程服务器,并被转发到localhost:80端口对应的服务上 。
2.远程端口转发:远程端口转发则是将远程服务器上的端口映射到本地计算机的某个端口。客户端与远程服务器建立 SSH 连接后,远程服务器开始监听指定端口。当有数据请求到达远程服务器的指定端口时,数据会通过 SSH 隧道被转发到客户端,客户端再将数据转发到本地主机的目标端口。例如,ssh -R 8080:localhost:80 user@remote-server命令,就是将远程服务器上的 8080 端口映射到本地的localhost:80端口,当外部有请求访问远程服务器的 8080 端口时,数据会经过 SSH 隧道到达本地并被转发到localhost:80端口对应的服务 。
3.动态端口转发:动态端口转发通过 SSH 创建一个 SOCKS 代理,所有通过该代理的流量都会经由 SSH 隧道进行加密传输。客户端与远程服务器建立 SSH 连接后,在本地监听指定端口作为 SOCKS 代理。当有应用程序通过该代理发起请求时,数据会通过 SSH 隧道发送到远程服务器,再由远程服务器转发到目标主机。例如,执行ssh -D 1080 user@remote-server命令,会在本地监听 1080 端口作为 SOCKS 代理,应用程序配置使用该代理后,其网络请求就会通过 SSH 隧道进行加密传输 。

二、使用 SSH 隧道配置远程设备访问权限的步骤
本地端口转发配置(以访问远程 Web 服务为例)
1.环境准备:假设本地设备为local_device,IP 地址是192.168.1.10,远程 Web 服务器为remote_server,IP 地址是10.0.0.10,Web 服务运行在 80 端口。确保本地设备和远程服务器都安装并启动了 SSH 服务。在 Linux 系统中,大多数发行版默认安装了 OpenSSH 服务器,可使用命令sudo systemctl start sshd启动 SSH 服务,并使用sudo systemctl enable sshd设置开机自启。
2.建立 SSH 隧道:在本地设备的终端中执行以下命令:
ssh -L 8080:10.0.0.10:80 user@10.0.0.10
参数解释:
--L:表示建立本地端口转发。
-8080:本地端口,可自行选择未被占用的端口,这里以 8080 为例。
-10.0.0.10:80:远程服务器的 IP 地址和目标端口,即要访问的远程 Web 服务的地址和端口。
-user:远程服务器上的用户名。
执行该命令后,系统会提示输入远程服务器的密码(若使用公钥验证则无需输入密码)。成功建立隧道后,在本地浏览器中访问http://127.0.0.1:8080,就相当于访问远程服务器上的http://10.0.0.10:80服务,从而实现对远程 Web 服务的访问。
远程端口转发配置(从外网访问内网设备)
1.环境准备:假设内网设备为inner_device,IP 地址是192.168.1.11,有公网 IP 的远程服务器为public_server,IP 地址是203.0.113.1。在内网设备和远程服务器上都安装并启动 SSH 服务。
2.建立 SSH 隧道:在内网设备上执行以下命令,连接到远程服务器:
ssh -R 8081:127.0.0.1:80 user@203.0.113.1
参数解释:
--R:表示建立远程端口转发。
-8081:远程服务器上用于映射内网服务的端口,需确保该端口在远程服务器上未被占用。
-127.0.0.1:80:内网设备上的目标地址和端口,这里127.0.0.1是内网设备自身的回环地址,80是要映射的服务端口。
-user:远程服务器上的用户名。
执行命令后,输入远程服务器的密码(或通过公钥验证)。建立远程端口转发后,在外部网络中,通过访问http://203.0.113.1:8081,就可以访问到内网设备上的http://127.0.0.1:80服务。
动态端口转发配置(作为 SOCKS 代理)
1.环境准备:本地设备为local_device,远程服务器为remote_server,确保两者都安装并启动了 SSH 服务。
2.建立 SSH 隧道:在本地设备的终端中执行以下命令:
ssh -D 1080 user@remote_server_ip
参数解释:
--D:表示建立动态端口转发,创建 SOCKS 代理。
-1080:本地端口,作为 SOCKS 代理的监听端口。
-user:远程服务器上的用户名。
-remote_server_ip:远程服务器的 IP 地址。
执行该命令后,在本地设备上配置应用程序使用 SOCKS 代理,代理地址为127.0.0.1,端口为 1080,这样应用程序的网络请求就会通过 SSH 隧道进行加密传输。

三、结合花生壳实现内网环境下的 SSH 隧道配置
花生壳内网穿透原理
花生壳是一款常用的内网穿透工具,它能够在本地设备与花生壳服务器之间建立连接,将内网中的服务端口映射到花生壳提供的域名或公网 IP 地址上,从而实现从外网访问内网服务。其原理是通过花生壳客户端与花生壳服务器的通信,将外网的请求转发到内网对应的设备和端口,有效解决了内网设备无法直接被公网访问的问题。
配置步骤
1.注册与安装花生壳:访问花生壳官网(https://hsk.oray.com/),注册一个花生壳账号。根据操作系统类型,下载并安装花生壳客户端。若是 Windows 系统,下载 Windows 版本的安装包,按照安装提示完成操作;若是 Linux 系统,下载对应的 Linux 版本安装包并安装。
2.登录花生壳客户端:打开花生壳客户端,使用注册的账号登录。登录成功后,在客户端界面中找到 “添加映射” 按钮。
3.添加映射规则:在添加映射页面,填写以下信息:
-应用名称:自定义,如 “远程 SSH 访问”。
-应用图标:可选择一个合适的图标来标识该映射。
-映射类型:选择 “TCP”。
-外网域名:如果没有购买域名,可使用花生壳提供的免费域名;若有自己的域名,可在域名注册商处将域名解析到花生壳分配的 IP 地址。
-外网端口:如果是免费版花生壳,端口一般由平台自动随机创建;若为付费版,可根据需求选择固定端口或随机端口。
-内网主机:填写内网中需要进行远程访问的设备 IP 地址,如192.168.1.10。
-内网端口:填写设备上 SSH 服务的端口,默认为 22。
-点击 “保存”,完成花生壳内网穿透配置。
1.建立 SSH 隧道:在本地计算机上,使用ssh命令连接到花生壳映射后的域名或 IP 地址和端口。例如:
ssh -p 随机分配的外网端口 user@花生壳域名或公网IP地址
这里的-p参数指定连接的端口,user是内网设备上的用户名,花生壳域名或公网IP地址是花生壳映射后提供的访问地址。通过这种方式,在没有公网 IP 的内网环境下,也能实现 SSH 隧道的远程访问。

四、使用 SSH 隧道配置远程设备访问权限的注意事项
安全问题
1.身份验证:为确保 SSH 连接的安全性,应使用强密码或公钥验证方式。公钥验证更为安全,因为它无需在网络中传输密码,降低了密码被窃取的风险。在使用公钥验证时,需在本地生成密钥对,然后将公钥复制到远程服务器上。生成密钥对的命令如下:
ssh - keygen -t rsa
按照提示生成密钥对后,使用以下命令将公钥复制到远程服务器:
ssh - copy - id user@remote_server_ip
1.防火墙设置:在建立 SSH 隧道时,需要确保本地和远程设备的防火墙允许 SSH 连接。在 Linux 系统中,使用iptables或firewalld等防火墙工具配置规则。例如,在firewalld中,使用以下命令允许 SSH 连接:
sudo firewall - cmd --permanent --add - service = ssh
sudo firewall - cmd --reload
连接稳定性
1.网络状况:SSH 隧道的连接稳定性依赖于网络状况。如果网络不稳定,可能会导致隧道连接中断或数据传输延迟。在进行远程访问时,尽量选择网络稳定的环境,避免在网络波动较大的情况下进行重要的操作。
2.保持连接:为了防止 SSH 隧道因长时间无活动而断开,可以在 SSH 连接时设置保持连接的参数。在ssh命令中添加-o ServerAliveInterval=60参数,该参数表示每 60 秒向服务器发送一次心跳包,以保持连接的活跃状态:
ssh -o ServerAliveInterval = 60 user@remote_server_ip

通过以上步骤和注意事项,能够有效地使用 SSH 隧道配置远程设备的访问权限,实现安全、稳定的远程访问。


拓展阅读
1.什么是 SOCKS 代理:SOCKS 代理是一种网络代理协议,它工作在 OSI 模型的会话层,主要用于转发网络流量,允许客户端通过代理服务器访问外部网络,通过 SSH 隧道建立的动态端口转发可创建 SOCKS 代理,实现安全的网络访问。
2.如何在 Windows 系统中使用 PuTTY 建立 SSH 隧道:下载并打开 PuTTY,在 “Session” 选项中输入远程服务器的 IP 地址和端口,在 “Tunnels” 选项中设置本地端口、转发方向和远程目标地址及端口,然后保存设置并连接到远程服务器即可建立 SSH 隧道。
3.SSH 协议中的加密算法有哪些:SSH 协议常用的加密算法有 AES(高级加密标准)、3DES(三重数据加密标准)、Blowfish 等,AES 因其高效性和安全性被广泛应用,不同算法在加密强度、速度和资源消耗上有所差异 。

新闻资讯
热门专题
最新专题
友情链接