配置SSH反向隧道可以让你从一个远程服务器安全地访问你的本地计算机或其他内部网络资源。以下是详细的步骤:
如果你还没有SSH密钥对,可以使用以下命令生成:
ssh-keygen -t rsa -b 4096
按照提示操作,通常会生成id_rsa
(私钥)和id_rsa.pub
(公钥)。
使用以下命令将公钥复制到远程服务器的~/.ssh/authorized_keys
文件中:
ssh-copy-id user@remote_server
其中,user
是远程服务器上的用户名,remote_server
是远程服务器的地址。
在本地计算机上,使用以下命令创建反向隧道:
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
默认情况下,SSH反向隧道会在你退出SSH会话后关闭。为了保持隧道连接,可以使用nohup
命令或screen
/tmux
会话。
nohup
nohup ssh -R 8080:localhost:80 user@remote_server &
screen
或tmux
启动一个新的screen
或tmux
会话:
screen -S ssh_tunnel
或
tmux new -s ssh_tunnel
在会话中运行SSH反向隧道命令:
ssh -R 8080:localhost:80 user@remote_server
按Ctrl+A
(对于screen
)或Ctrl+B
(对于tmux
),然后按D
来分离会话。
要重新连接到会话,可以使用以下命令:
screen -r ssh_tunnel
或
tmux attach -t ssh_tunnel
确保远程服务器上的防火墙允许访问你配置的反向隧道端口(例如8080)。你可以使用以下命令来打开端口:
sudo ufw allow 8080
或者使用iptables
:
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
现在,你可以通过访问远程服务器的remote_port
来访问本地计算机上的服务。例如,如果你的本地计算机运行了一个Web服务器并监听端口80,你可以通过访问http://remote_server:8080
来访问它。
通过以上步骤,你就可以成功配置SSH反向隧道并安全地访问本地计算机或其他内部网络资源。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: CentOS VNC如何设置远程桌面