如何进行 SSH 隧道?

Ros*_*nda 7 ssh networking tunnel

阅读了一篇关于 SSH 有多酷的文章后,我尝试了那里给出的关于隧道连接的解决方案。

这是我第一次尝试这个。

我打开了一个终端并输入:

ssh -D 9999 -C myUsername@localhost
Run Code Online (Sandbox Code Playgroud)

我收到了这条消息:

特权端口只能由 root 转发。

所以这一次我用 sudo 重新开始:

sudo ssh -D 9999 -C root@localhost
Run Code Online (Sandbox Code Playgroud)

但我仍然无法访问。这是我这次收到的消息:

ssh:连接到主机 localhost 端口 22:连接被拒绝

我究竟做错了什么?

Dav*_*ill 11

一个简单的隧道通常是这样完成的

ssh -L 8080:localhost:80 myUsername@remoteserver.com

  • -L = 本地端口转发,即从我所在的地方到我要去的地方
  • 8080 =机上要转发的端口。我的浏览器将连接到的端口为http://localhost:8080
  • localhost =远程服务器上的目标,在本例中为自身。
  • 80 = 远程(目标)机器上要连接的端口,服务运行的端口。

这将允许您访问远程服务器上的 Web 服务器,当您具有 ssh 访问权限但没有 Web 访问权限时。

ssh 连接到您的本地主机通常毫无意义。这样做只是为了检查您的 ssh 服务器是否正常运行或密钥是否正确。

您看到的连接被拒绝错误是因为 ssh 服务器没有在您的本地机器上运行。sudo apt-get install openssh-server 然后你可以从 localhost ssh 到你的本地机器,或者其他任何你可以通过端口 22 连接到这台机器的地方(通常在你的本地网络防火墙后面)

-D(动态应用程序转发)是一种不同的情况,如果本地机器上的一些棘手的胖客户端应用程序(例如 mysql)需要访问远程机器上的服务器,则更适用。它较少使用。

当您尝试重定向小于 1024 的本地端口时,会出现有关特权端口的消息。因此,在上面的示例中使用端口 8080,以避免使用特权端口 80。对于上面的示例,您的浏览器将使用 http://localhost:8080