xts.so - 2016年4月
type: channel
link: https://movil.xts.so/2016/04/
description: 分享技术相关的文章
items: SSH端口映射

SSH端口映射
type: item
date: 2016-04-19T19:40:00+08:00
description: SSH提供了两种端口映射方式，一种是本地端口映射，另一种是远程端口映射。 使用本地端口映射，SSH客户端会在本地监听一个端口，所有到该端口的连接全部转发到SSH服务器上指定的主机和端口号上。例如，我需要在我自己的电脑上访问VPS服务器上的数据库，但是服务器上的MySQL绑定在了127.0.0.1的IP地址上，可以用下面的命令把我电脑上的33306端口转发到服务器上的3306端口。 ssh xts.so -l root -L 33306:localhost:3306 运行这个命令后，我就可以直接用MySQL客户端连接自己电脑的33306端口访问服务器数据库了。 SSH的-L参数完整格式是-L [bind_address]:port:host:hostport，其中bind_address是本机（客户端）的绑定IP，可以省略，缺省值是127.0.0.1，如果需要允许其它电脑访问，可以监听0.0.0.0或者简单写个*；port是本机开始监听的端口，这个端口的连接会转发到服务器上；host是相对于服务器而言的目标主机地址，域名、hostname、IP地址均可；hostport是目标主机的端口号。 3497093050.svg 如果需要在本地内网访问服务器机房内网的数据库，只需要指定binding_address和host就可以了。 远程端口映射，SSH会在服务器上监听一个端口，所有到该端口的连接全部转发到SSH客户端指定的主机和端口号上。例如，我需要让本机的80端口可以在公网访问，却又不能独立使用公网IP，可以找一台VPS服务器作远程端口映射。 ssh xts.so -l root -R *:8080:localhost:80 运行这个命令后，用浏览器打开http://xts.so:8080/就相当于访问我本地电脑的80端口。 SSH的-R参数完整格式是-R [bind_address:]port:host:hostport，其中bind_address是远程（服务器）的绑定IP，可以省略，缺省值也是127.0.0.1；port是远程服务器上开始监听的端口；host是相对于本地电脑而言的目标主机地址；hostport是目标主机的端口号。 SSH远程映射也叫反向端口映射，因为常用于把内网主机的22端口暴露到公网。 ssh xts.so -l root -R *:2222:localhost:22 -N -f 这个命令可以把服务器的2222端口映射到本机的22端口，从而允许从Internet登录内网服务器。-N告诉ssh不要运行任何命令，此连接只用于端口映射。-f选项可以让ssh转入后台运行，这样ssh命令运行之后就能回到命令行，可以继续使用其它命令。