Ⅰ linux如何做端口转发
1、SSH 端口转发
SSH 提供了一个非常有意思的功能,就是端口转发,它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。
2、iptables 端口转发
CentOS 7.0 以下使用的是iptables,可以通过iptables实现数据包的转发。
3、firewall 端口转发
CentOS 7.0以上使用的是firewall,通过命令行配置实现端口转发。
4、rinetd 端口转发
rinetd是一个轻量级TCP转发工具,简单配置就可以实现端口映射/转发/重定向。
Ⅱ SSH端口转发实现内网穿透
“世界上最遥远的距离就是你在外网请求,我在内网测试。”
这句话的内容,对于开发人员来说,特别容易理解。很多情况下,我们的开发及测试环境在单位的内网下,只能通过位于内网的机器来连接操作,位于外网的机器是连不到内网环境的。比如说,如果我们周末在家工作,而家里的机器又不在单位内网环境下,那该如何连接内网的环境呢?难不成我们还要大周末的跑到单位去加班吗?
答案是否定的。这是种普遍又迫切的需求,叫 “内网穿透” 。这里我们使用 SSH端口转发 的技术,解决这种问题。
假设,host1和host2位于内网,host3位于外网,host3可以连接host1和host2,但host1不能连接host3和host2。我们要做的是,通过位于外网的host3,让host1来连接host2。
首先,在host1上进行如下操作:
其中,-L参数指定了 “本地主机端口:目标主机:目标主机端口” 。这表示,让host1作为 sshd服务端 ,监听它自己的2222端口,然后将所有数据经由host3,转发到host2的22端口。
这种情况下,host1不能连接host3,但由于host1的配置,使得从host1到host3建立了一条 “SSH隧道” 。
然后,在host1上进行如下操作:
其中,-p参数指定了ssh连接的端口,默认为22,这里指定了2222端口。这表示,让host1作为 ssh客户端 ,连接它自己的2222端口,相当于连接host2的22端口。
一般情况下,host2与host3为一台主机,换句话说,我们只要实现连接host3,那么再连接host2也不成问题。
这时,命令分别转换为:
本质上,SSH本地端口转发,主要是实现以下两个方面:
假设,host1和host2位于内网,host3位于外网,host1可以连接host3和host2,但host3不能连接host1和host2。我们要做的是,通过位于内网的host1,让host3来连接host2,也就是实现所谓的 “内网穿透” 。
首先,在host1上进行如下操作:
其中,-R参数指定了 “远程主机端口:目标主机:目标主机端口” 。这表示,让host3作为 sshd服务端 ,监听它自己的2222端口,然后将所有数据经由host1,转发到host2的22端口。
这种情况下,host3不能连接host1,但由于host1的配置,使得从host1到host3建立了一条 “SSH反向隧道” 。
然后,在host3上进行如下操作:
其中,-p参数指定了ssh连接的端口,默认为22,这里指定了2222端口。这表示,让host3作为 ssh客户端 ,连接它自己的2222端口,相当于连接host2的22端口。
一般情况下,host2与host1为一台主机,换句话说,我们只要实现连接host1,那么再连接host2也不成问题。
这时,命令分别转换为:
本质上,SSH远程端口转发,主要是实现以下两个方面:
内网穿透 ,简单来说就是,利用位于外网的主机,来连接位于内网的主机,这符合 SSH远程端口转发 的情况。但由于实际情况中,SSH连接经常由于这样那样的问题,导致连接断开,因此我们不得不重新去在内网主机上建立与外网主机的连接,也就是维持这条“SSH反向隧道”,autossh能实现连接断开之后 自动重连 功能。
autossh与ssh用法类似,只要将ssh命令替换成autossh命令即可,如下所示:
其中,-M参数指定了 autossh监听的端口 ,注意这里与其转发的端口要区分开。
另外,-N表示禁止执行远程命令,-T表示禁止分配伪终端,这两个参数结合起来表示SSH连接不允许用户交互执行远程操作,只能用来传数据,从而保证了远程主机的安全。
每次重新建立连接,autossh都需要确认一下登录身份。要保证 自动重连 ,前提就是要实现 自动登录 。
一种常见的做法,就是使用 公钥登录 进行免密登录,将host1上的公钥传送至host3上。这样,每次在进行SSH登录的时候,host3都会向host1发送一段随机字符串,host1用自己的私钥加密后将数据返回,然后host3用事先存好的公钥对返回的数据进行解密,如果成功,则证明host1的身份可信,允许直接登录,不再要求密码。
还有一种做法,就是利用 sshpass 将密码明文传输给autossh,如下所示:
其中,-p参数指定了登录的密码。除了命令行输入密码的形式,sshpass还包含-f、-e等参数,分别支持文件输入密码及系统环境变量输入密码等形式,如图所示。
实现内网穿透,除了转发 22端口 外,我们也可以转发其他应用的端口,如web服务的 80端口 、mysql的 3306端口 等,这里就不一一细说了。
Ⅲ SSH高级功能 - 远程端口转发
在本地端口的场景中,可以从Server-B建立到Server-A的SSH连接,但是如果Server-B到Server-A之间无法连接,只有Server-A到Server-B的连接呢? (比如开发机可以访问服务器,但是服务器一般是不可以访问本地开发机的)
假设Server-A的IP为 192.168.58.101 ,Server-B的IP是 192.168.58.103
在Server-A上执行如下命令:
上面的命令,就建立了远程端口转发,把远程服务器Server-B的9906端口的所有数据都会被转发到Server-A 192.168.58.101 的3306端口
在Server-B上执行命令
就可以连接到Server-A上的MySQL Server了
本地端口转发 与 远程端口转发 结合起来使用,可以进行链式转发。假设A主机在公司,B主机在家,C主机为远程云主机。A主机上运行了前文的Node.js服务,需要在B主机上访问该服务。由于A和B不在同一个网络,且A主机没有独立公共IP地址,所以无法直接访问服务。
通过本地端口转发,将发送到B主机4000端口的请求,转发到远程云主机C的3000端口。
通过远程端口转发,将发送到远程云主机C端口3000的请求,转发到A主机的2000端口。
这样,在主机B可以通过访问 http://localhost:4000 来访问主机A上的服务。
Ⅳ 中兴e500电信版路由器端口转发端口转发设置
摘要 打开端口转发或应用程序及游戏选项卡。每个路由器会稍有不同,但都需要找一下这两个选项。如果你没有看到他们,试试“高级设置”,看有没有“端口转发”。
Ⅳ SSH远程操作与端口转发的原理
SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作。
上一节的操作,就是一个例子:
单引号中间的部分,表示在远程主机上执行的操作;后面的输入重定向,表示数据通过SSH传向远程主机。
这就是说,SSH可以在用户和远程主机之间,建立命令和数据的传输通道,因此很多事情都可以通过SSH来完成。
下面看几个例子。
【例1】
将 HOME/src/目录。
【例2】
将远程主机$HOME/src/目录下面的所有文件,复制到用户的当前目录。
【例3】
查看远程主机是否运行进程httpd。
既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。
假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写:
SSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以想象,如果8080端口原来是一个不加密端口,现在将变成一个加密端口。
有时,绑定本地端口还不够,还必须指定数据传送的目标主机,从而形成点对点的"端口转发"。为了区别后文的"远程端口转发",我们把这种情况称为"本地端口转发"(Local forwarding)。
假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连通前面两台主机。因此,很自然的想法就是,通过host3,将host1连上host2。
我们在host1执行下面的命令:
命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口2121,然后指定host3将所有的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)。
这样一来,我们只要连接host1的2121端口,就等于连上了host2的21端口。
"本地端口转发"使得host1和host3之间仿佛形成一个数据传输的秘密隧道,因此又被称为"SSH隧道"。
下面是一个比较有趣的例子。
它表示将本机的5900端口绑定host3的5900端口(这里的localhost指的是host3,因为目标主机是相对host3而言的)。
另一个例子是通过host3的端口转发,ssh登录host2。
这时,只要ssh登录本机的9001端口,就相当于登录host2了。
上面的-p参数表示指定登录端口。
既然"本地端口转发"是指绑定本地端口的转发,那么"远程端口转发"(remote forwarding)当然是指绑定远程端口的转发。还是接着看上面那个例子,host1与host2之间无法连通,必须借助host3转发。但是,特殊情况出现了,host3是一台内网机器,它可以连接外网的host1,但是反过来就不行,外网的host1连不上内网的host3。这时,"本地端口转发"就不能用了,怎么办?
解决办法是,既然host3可以连host1,那么就从host3上建立与host1的SSH连接,然后在host1上使用这条连接就可以了。
我们在host3执行下面的命令:
R参数也是接受三个值,分别是"远程主机端口:目标主机:目标主机端口"。这条命令的意思,就是让host1监听它自己的2121端口,然后将所有数据经由host3,转发到host2的21端口。由于对于host3来说,host1是远程主机,所以这种情况就被称为"远程端口绑定"。
绑定之后,我们在host1就可以连接host2了:
这里必须指出,"远程端口转发"的前提条件是,host1和host3两台主机都有sshD和ssh客户端。
SSH还有一些别的参数,也值得介绍。
N参数,表示只连接远程主机,不打开远程shell;T参数,表示不为这个连接分配TTY。这个两个参数可以放在一起用,代表这个SSH连接只用来传数据,不执行远程操作。
f参数,表示SSH连接成功后,转入后台运行。这样一来,你就可以在不中断SSH连接的情况下,在本地shell中执行其他操作。
要关闭这个后台连接,就只有用kill命令去杀掉进程。
Ⅵ 端口转发怎么加密
端口转发加密步骤:
一,服务器主机上开启vncserver;
二,客户端上运行命令,把服务器端口数据转到客户端本地端口【1234】上,可以看出,本地端口【1234】已经处于监听状态;
三,客户端上执行命令,进行VNC连接;
四,把VNC连接数据抓包,可以看出走的是SSH协议,数据为加密状态。
Ⅶ 常用的adb命令
android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互,被称为Android 调试桥。
它是一种客户端-服务器程序,包括以下三个组件:
adb shell 命令
adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下
monkey命令
当您启动某个 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。
然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:
模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推
如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
服务器与所有设备均建立连接后,您便可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。
要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试 (位于 开发者选项 下)。
在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需将其显示出来,请依次转到 设置 > 关于手机 ,然后点按 版本号 七次。返回上一屏幕,在底部可以找到 开发者选项 。
在某些设备上,“开发者选项”屏幕所在的位置或名称可能有所不同。
执行 adb devices 验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出。
一般情况下,adb 通过 USB 与设备进行通信,但您也可以在通过 USB 完成一些初始设置后,通过 WLAN 使用 adb,如下所述。
如果 adb 连接断开:
如果有多个设备在运行,您在发出 adb 命令时必须指定目标设备。为此,请使用 devices 命令获取目标设备的序列号。获得序列号后,请结合使用 -s 选项与 adb 命令来指定序列号。如果您要发出很多 adb 命令,可以将 $ANDROID_SERIAL 环境变量设为包含序列号。如果您同时使用 -s 和 $ANDROID_SERIAL , -s 会替换 $ANDROID_SERIAL 。
$ adb -s emulator-5555 install helloWorld.apk
注意 :如果您在多个设备可用时发出命令但未指定目标设备,adb 会生成错误。
如果有多个可用设备,但只有一个是模拟器,请使用 -e 选项将命令发送至该模拟器。同样,如果有多个设备,但只连接了一个硬件设备,请使用 -d 选项将命令发送至该硬件设备。
使用 forward 命令设置任意端口转发,将特定主机端口上的请求转发到设备上的其他端口。以下示例设置了主机端口 6100 到设备端口 7100 的转发:
>adb forward tcp:6100 tcp:7100
您可以使用 pull 和 push 命令将文件复制到设备或从设备复制文件。与 install 命令(仅将 APK 文件复制到特定位置)不同,使用 pull 和 push 命令可将任意目录和文件复制到设备中的任何位置。
如需从设备中复制某个文件或目录(及其子目录),请使用以下命令:
adb pull remote local
如需将某个文件或目录(及其子目录)复制到设备,请使用以下命令:
adb push loca remote
adb kill-server
您可以使用 shell 命令通过 adb 发出设备命令,也可以启动交互式 shell。如需发出单个命令,请使用 shell 命令,如下所示:
adb [-d |-e | -s shell shell_command
在 adb shell 中,您可以使用 Activity 管理器 ( am ) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性,等等。在 shell 中,相应的语法为:
您也可以直接从 adb 发出 Activity 管理器命令,无需进入远程 shell。例如:
adb shell am start -a android.intent.action.VIEW
Ⅷ Windows端口转发(Port Forwarding in Windows)
在Windows系统中,从XP开始就内嵌了一个设置网络端口转发的功能。依靠这个功能,任何到本地端口的TCP连接(ipv4或ipv6)都能够被转发到任意一个本地端口,甚至是远程主机的某个端口。并且,Windows系统并不需要去开启监听这个转发端口的服务。
在Windows服务器中,远程访问控制协议(RRAS)通常被用作端口转发,但是有一种更简单的配置方法,并且这种配置方法适用于windows的任意版本。
Windows系统下的端口转发使用portproxy模式下的netsh命令,该命令的使用前提是要在管理员身份打开cmd进行执行。
netsh interface portproxy add v4tov4 listenaddress =localaddress listenport = localport connectaddress =destaddress connectport =destport protocol= tcp
listenaddress – 待连接的ip地址。
listenport –待连接的tcp本地端口 。
connectaddress – 待连接被转发的本地或远程主机的ip地址(支持域名)
connectport –从listenport转发到的tcp端口
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110
1) netstat -ano | findstr :3340来验证3340端口是否正在监听中,如果该命令没有返回任何信息,或者说通过netsh接口并没有实现端口转发的功能,那么需要查看下系统是否开启了iphlpsvc(ip Helper)服务。
2) tasklist | findstr 3340查看监听该端口的进程
3) 检查防火墙是否关闭,如果关闭则跳过。如果打开需要手工配置相应的防火墙。
连接时请确保防火墙(Windows防火墙或者其他的第三方防护软件)允许外部连接到一个全新的端口,如果不允许,那么只能自行添加一个新的Windows防火墙规则,命令如下:netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110 localport=3340 action=allow
当通过Windows防火墙接口为3340端口建立一个新的规则时,这个端口需要保证没有被任何程序占用,也就是说此端口仅供网络驱动使用。你可以创立任意的Windows端口转发规则,所有的netsh接口下的端口代理规则都是永久的,并且储存在系统中(不受开机重启的影响)。
查看系统中的所有转发规则是否生效:
netsh interface portproxy show all
查看端口转发的设置:netsh interface portproxy mp
删掉一个特定的端口转发规则:
netsh interface portproxy delete v4tov4
清空当前所有的配置规则:
netsh interface portproxy reset
从远程主机来尝试连接这个新转发的端口3340,3340端口等同于原来的3389端口,连接的地址为10.10.1.110:3340。
注意:这些转发规则仅仅适用于TCP端口,对于UDP的端口转发,使用上面的方法是无效的。在配置规则时,不能将127.0.0.1作为连接地址。
1) 通过一台windows机器端口转发到一台windows远程主机
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110
netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101
2) 通过一台ipv4的Windows机器转发到一台ipv6的服务器。
netsh interface portproxy add v4tov6 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=ffff::66
1) 在Windows Server 2012 R2中,端口转发规则有可能会在系统重启后被重置,在这种情况下,需要在网络协议中检查是否存在配置不当,导致网络的间断性断开,或者当系统重启时是否出现了ip地址的变换(推荐使用静态ip)。在一个工作组里,通常是在windows任务计划程序里添加了一个实现端口转发的脚本。
2) 在Windows 2003/XP中,必须在注册表(HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters)中找到并设置IPEnableRouter参数为1才能实现端口转发。
3) 防火墙规则检查
4) 端口转发依赖的ip helper服务是否启动
5) 端口转发是否生效
6) Windows7和WindowsServer2008R2安全事件的说明 操作系统日志标识
Windows日志查看
6273 网络策略服务器拒绝用户访问。
6274 网络策略服务器放弃用户的请求。
4868 证书管理器拒绝了挂起的证书请求。
4870 证书服务吊销了证书。
4944 当启动 Windows 防火墙时,以下策略处于活动状态。
4945 当启动 Windows 防火墙已列出规则。
4946 Windows 防火墙例外列表已更改。添加的规则。
4947 Windows 防火墙例外列表已更改。修改规则的。
4948 Windows 防火墙例外列表已更改。规则已被删除。
4949 Windows 防火墙设置都恢复为默认值。
4950 更改 Windows 防火墙设置。
4951 Windows 防火墙忽略规则,因为无法识别的主要版本号。
4952 Windows 防火墙忽略规则的部分,因为无法识别它的次要版本号。将强制执行该规则的其他部分。
4953 由于无法分析,Windows 防火墙将忽略规则。
4954 Windows 防火墙组策略设置已更改,并且未应用新设置。
4956 Windows 防火墙更改活动配置文件。
5024 Windows 防火墙服务已成功启动。
5025 Windows 防火墙服务已停止。
5027 Windows 防火墙服务无法从本地存储区中检索的安全策略。Windows 防火墙将继续执行当前的策略。
5028 Windows 防火墙无法分析新的安全策略。Windows 防火墙将继续执行当前的策略。
http://woshub.com/port-forwarding-in-windows/
Ⅸ ssh端口转发的命令解读
ssh如果设置了使用数字证书,那么连接的时候是用这个证书做登陆时的加密解密的
然后,双方会传递一个口令,用语数据传递时的加密和解密,因为这个对称模式比非对称模式速度高。几分钟后重新换一个的,
注意,如果数据转给其他设备了,那么转之前是解密的,因为对方不知道密文如何解的
Ⅹ netsh命令实现计算机本地端口转发(端口映射)
运行cmd
添加转发在命令行输入如下:
回车后就会将本机的8080端口转发到192.168.1.2这个主机
查看所有端口转发的状态:
删除端口转发: