linux ssh 将服务器端口转发至本地或将本地端口映射到远端
将远程服务器的端口映射到本地,以方便调试。
# ssh -L 9999:example.org:80 -N -T username@remote_host
ssh -NL LocalPort:RemoteAddr:RemotePort root@xxx.com
ssh -NL 3307:example.org:3306 root@remote_ip -p remote_port
#
ssh -L 9999:example.org:80 -N -i ~/.ssh/id_rsa -p 2022 root@example.org
ssh -L 3307:127.0.0.1:3306 -N -i ~/.ssh/id_rsa -p 2022 root@8.8.8.8
这个命令使用 SSH 来创建一个本地端口转发(Local Port Forwarding)。让我解释一下每个部分的含义:
ssh
: 启动 SSH 客户端。
-N
: 表示不要执行任何远程命令。通常,SSH 会尝试登录到远程服务器并打开一个交互式会话,但 -N
标志告诉它只建立 SSH 连接,而不执行任何远程命令。
-L 3307:example.org:3306
: 这是本地端口转发的定义。它的意思是将本地端口 3307 映射到远程服务器上的 example.org
主机的端口 3306。换句话说,当你连接到本地端口 3307 时,所有的流量都将被转发到远程服务器上的 example.org
主机的端口 3306。
root@remote_ip
: 这是远程 SSH 服务器的登录凭据。root
是远程服务器上的用户名,remote_ip
是远程服务器的 IP 地址。你需要替换它们以匹配你实际的远程服务器登录信息。
-p remote_port
: 这是指定远程 SSH 服务器的端口号的选项。remote_port
应该被替换为你实际使用的远程 SSH 服务器的端口号。
综合起来,这个命令的作用是在你的本地计算机上创建一个到远程服务器的 SSH 连接,并将本地端口 3307 映射到远程服务器 example.org
的端口 3306。这通常用于访问远程服务器上的 MySQL 数据库,通过本地计算机上的端口 3307 来访问远程 MySQL 服务器。
# 将远程端口映射到本地(远程端口转发):
ssh -L [本地端口]:[目标主机]:[目标端口] [用户名]@[远程主机]
# 将本地端口映射到远程(本地端口转发):
ssh -R [远程端口]:localhost:[本地端口] [用户名]@[远程主机]