在网络通信中,SSH 隧道是一种非常实用的技术,可以实现数据的安全传输和端口转发等功能。以下是在 Windows 本地主机和 Ubuntu 服务器之间创建 SSH 隧道的详细步骤。
如果你没有服务器,没有技术,想要配置这个可以看这个(218.0.48.3:8803),帮你提供最优解决方案。
一、Ubuntu 服务器端的准备工作
- 创建秘钥:在 Ubuntu 服务器上执行 ssh-keygen 命令,用于生成 SSH 密钥对。这将在 /root/.ssh/ 目录下生成私钥 id_rsa 和公钥 id_rsa.pub。
- 进入秘钥目录:执行 cd /root/.ssh/ 命令,进入到包含密钥文件的目录。
- 下载私钥:使用 sz id_rsa 命令将私钥下载到 Windows 本地主机的指定目录(例如 C:\Users\dyf\.ssh)。
- 配置 SSH 服务允许远程端口转发:使用 vim /etc/ssh/sshd_config 命令编辑 SSH 服务的配置文件。将配置文件中的 #GatewayPorts no 改为 GatewayPorts yes,这将允许 SSH 服务进行端口转发。
- 重启 SSH 服务:执行 systemctl restart sshd.service 命令,重启 SSH 服务使配置生效。
- 增加防火墙规则:执行 sudo iptables -A INPUT -p tcp --dport 9781 -j ACCEPT 命令,在防火墙中添加规则,允许外部访问服务器的 9781 端口。
二、Windows 本地主机的准备工作
- 创建秘钥:在 Windows 本地主机的命令提示符中,进入到 C:\Users\dyf\.ssh 目录(如果该目录不存在,可以手动创建)。执行 ssh-keygen -t rsa -b 4096 命令,创建一个新的 RSA 密钥对,用于与 Ubuntu 服务器进行 SSH 连接。
- 复制公钥到 Ubuntu 服务器:打开 C:\Users\dyf\.ssh 目录下的 id_rsa.pub 文件,将其中的内容复制到 Ubuntu 服务器的 /root/.ssh/authorized_keys 文件中。如果 authorized_keys 文件不存在,可以创建一个。
三、创建 SSH 隧道
- 在 Windows 本地主机上执行隧道创建命令:在 C:\Users\dyf\.ssh 目录下打开命令提示符,执行以下命令创建隧道:
ssh -i.\id_rsa -fCNR 9781:127.0.0.1:8083 -o ServerAliveInterval=60 -o ServerAliveCountMax=120 -p 22 ubuntu@666.com
- 其中,-i.\id_rsa 指定使用本地的私钥文件进行身份验证;-fCNR 表示在后台运行隧道(-f),创建反向隧道(-R),并将隧道绑定到本地的所有网络接口(-C,这是为了进行数据加密);9781:127.0.0.1:8083 表示将 Ubuntu 服务器的 9781 端口映射到本地的 8083 端口;-o ServerAliveInterval=60 和 -o ServerAliveCountMax=120 是用于保持 SSH 连接活跃的选项;-p 22 指定 SSH 连接的端口(如果 Ubuntu 服务器的 SSH 端口不是默认的 22,则需要相应地进行修改);ubuntu@666.com 是用于连接到 Ubuntu 服务器的用户名和服务器地址。
- 输入 Ubuntu 服务器密码:在执行上述命令后,系统会提示输入 Ubuntu 服务器的密码。输入正确的密码后,SSH 隧道就会建立起来。
四、验证隧道是否建立成功
- 在 Ubuntu 服务器上发送消息:在 Ubuntu 服务器上执行 echo '666' | nc 666.com 9781 命令,向 9781 端口发送消息。
- 在 Windows 本地主机上接收消息:如果隧道建立成功,在 Windows 本地主机上访问 127.0.0.1:8083 应该能够接收到 Ubuntu 服务器发送的消息 “666”。
通过以上步骤,就可以在 Windows 本地主机和 Ubuntu 服务器之间成功创建 SSH 隧道,并实现数据的传输和端口的映射。