如何配置SSH反向隧道

529
2025/4/6 12:32:26
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

配置SSH反向隧道可以让你从一个远程服务器安全地访问你的本地计算机或其他内部网络资源。以下是详细的步骤:

1. 在本地计算机上生成SSH密钥对(如果还没有的话)

如果你还没有SSH密钥对,可以使用以下命令生成:

ssh-keygen -t rsa -b 4096

按照提示操作,通常会生成id_rsa(私钥)和id_rsa.pub(公钥)。

2. 将公钥复制到远程服务器

使用以下命令将公钥复制到远程服务器的~/.ssh/authorized_keys文件中:

ssh-copy-id user@remote_server

其中,user是远程服务器上的用户名,remote_server是远程服务器的地址。

3. 配置SSH反向隧道

在本地计算机上,使用以下命令创建反向隧道:

ssh -R remote_port:localhost:local_port user@remote_server
  • remote_port:远程服务器上要监听的端口。
  • localhost:local_port:本地计算机上要转发的端口。
  • user:远程服务器上的用户名。
  • remote_server:远程服务器的地址。

例如,如果你想在远程服务器上监听端口8080,并将流量转发到本地计算机的端口80,可以使用以下命令:

ssh -R 8080:localhost:80 user@remote_server

4. 保持隧道连接

默认情况下,SSH反向隧道会在你退出SSH会话后关闭。为了保持隧道连接,可以使用nohup命令或screen/tmux会话。

使用nohup

nohup ssh -R 8080:localhost:80 user@remote_server &

使用screentmux

  1. 启动一个新的screentmux会话:

    screen -S ssh_tunnel
    

    tmux new -s ssh_tunnel
    
  2. 在会话中运行SSH反向隧道命令:

    ssh -R 8080:localhost:80 user@remote_server
    
  3. Ctrl+A(对于screen)或Ctrl+B(对于tmux),然后按D来分离会话。

  4. 要重新连接到会话,可以使用以下命令:

    screen -r ssh_tunnel
    

    tmux attach -t ssh_tunnel
    

5. 配置远程服务器上的防火墙

确保远程服务器上的防火墙允许访问你配置的反向隧道端口(例如8080)。你可以使用以下命令来打开端口:

sudo ufw allow 8080

或者使用iptables

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

6. 访问本地服务

现在,你可以通过访问远程服务器的remote_port来访问本地计算机上的服务。例如,如果你的本地计算机运行了一个Web服务器并监听端口80,你可以通过访问http://remote_server:8080来访问它。

通过以上步骤,你就可以成功配置SSH反向隧道并安全地访问本地计算机或其他内部网络资源。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: CentOS VNC如何设置远程桌面