首页 游戏攻略正文内容

SSH除了远程连接还可以在命令行中做端口转发和反向远程端口转发

admin 2024-12-04 177

通过远程连接的管理工具利用开启隧道的形式转发端口的做法,现在大家或多或少都用过吧。但是直接在命令行使用ssh添加-L或者-R的方式来进行代理或者反向代理转发,又有多少人试过呢?

ssh-L和ssh-R是SSH(SecureShell)命令的两个参数,它们用于设置端口转发。端口转发允许您通过一个安全的SSH连接将一个端口从一个网络转发到另一个网络。

下面通过假设下面的一个架构,来模拟演示如何不用图形软件仅在命令行中创建隧道转发端口。

一、ssh-L(本地端口转发)

-L参数用于创建一个从本地机器到远程机器的端口转发。这种类型的转发通常用于将远程服务器上的服务转发到本地机器,以便可以安全地访问它。

语法:

ssh-L本地端口:远程地址:远程端口用户名@远程主机

本地端口:在本地机器上监听的端口。

远程地址:远程机器的地址,可以是远程机器本机的localhost或者远程机器可以访问到的其他机器的IP。

远程端口:远程机器上的端口,您想要从本地访问的服务的端口。

例一:假设您想要从本地机器安全地访问远程服务器上的MySQL数据库服务器,该服务器运行在远程服务器的3306端口上。

ssh-L3306:localhost:3306用户名@远程主机

这个命令会在本地机器上监听3306端口,并将其转发到远程主机的3306端口。然后,您可以在本地机器上使用MySQL客户端连接到localhost:3306,实际上您连接的是远程服务器上的MySQL服务。

具体的运行效果:

假设mysql服务器在虚拟局域网中的IP为10.147.17.253

sean@MacBook-Pro~%ssh-L3306:localhost:3306root@10.147.17.253Theauthenticityofhost'10.147.17.253(10.147.17.253)'can':O/lqToPCh+(yes/no/[fingerprint])?yesWarning:Permanentlyadded'10.147.17.253'(ED25519)@10.147.17.253'spassword:Lastlogin:WedOct210:41:062024[root@databases~]curllocalhost:8880!DOCTYPEhtmlhtmlheadtitleWelcometonginx!/titlestylehtml{color-scheme:lightdark;}body{width:35em;margin:0auto;font-family:Tahoma,Verdana,Arial,sans-serif;}/style/headbodyh1Welcometonginx!/h1pIfyouseethispage,/ppForonlinedocumentationandsupportpleaserefertoahref=""//Commercialsupportisavailableatahref=""/a./ppemThankyouforusingnginx./em/p/body/html

三、注意事项

在使用端口转发时,您需要确保SSH服务端允许该类型的转发,并且您有足够的权限在两端设置端口转发。

对于-L和-R转发,您可能需要在SSH服务端的配置文件/etc/ssh/sshd_config中设置AllowTcpForwardingyes。

如果您在防火墙后面,您可能需要在防火墙规则中允许转发的端口。

端口转发是SSH的强大功能之一,它可以帮助您安全地访问位于不同网络中的服务。

文章目录