通过SSH重定向端口

有时候我们需要 通过套接字传输数据 不同机器之间的连接,例如Telnet连接,FTP文件下载,SQL查询或任何其他类型的传输。

该数据通过网络原始传输,因此 不安全的,这意味着它们可能会被起点和终点之间路径上的任何节点(即, Robados.

我们无法阻止捕获这些数据,但是我们可以阻止的是第三方会对其进行解释和理解,从而对通信进行加密。

SSH的 是允许我们做的工具 安全连接 在机器之间。 它最常见的用途是远程连接到命令解释器。

但是,它提供了其他可能性,例如创建 加密隧道 在不同的机器之间。
假设我们要从host1 telnet到host2:

host1$ telnet host2

这种沟通是完全开放的,可以 被拦截。 为了保护它,我们将主机5000上任意选择的端口(例如1)重定向到主机23上的端口2(telnet)。

这样,我们将获得所有发送到主机5000的端口1的数据,以加密方式通过ssh通过主机22的端口2打开的隧道传输,然后重定向到主机23的端口2,从而到达其最终目的地。

为此,我们需要知道host2的用户名和密码。

要打开隧道,我们写:

host1$ ssh -R 5000:localhost:23 usuariohost2@host2

好吧:

host1$ ssh -L 5000:host2:23 usuariohost2@host2

这两个选项是等效的。 要建立telnet连接,我们不再引用host2,而是引用host1上的所选端口:

host1$ telnet localhost 5000

这样,无论是telnet还是其他方式,我们都能确保任何通信的安全。 多做一些调查,由于 SSH的 这些重定向也可以执行到第三台计算机,这将使我们能够通过一个入口点就可以安全地从整个LAN访问另一个LAN。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   纳米

    该理论看起来非常有趣,但是如果我们看到一个实际案例,那就更是如此。

    事实是,即使我很矮,我还是喜欢这篇文章。

    1.    原始的

      也许看一下您受到启发的维基 https://wiki.archlinux.org/index.php/Secure_Shell#Forwarding_other_ports
      和相同,但autossh部分 https://wiki.archlinux.org/index.php/Secure_Shell#Autossh_-_automatically_restarts_SSH_sessions_and_tunnels
      实际上,您可以通过ssh发送的任何内容,无论是流媒体还是与主机的连接。 等等出于x原因,您想对其进行加密。
      和securecrt规则

  2.   特斯拉

    有时我会在非常基本的级别上使用SSH。 默认端口是22,对吧?

    因此,如果我理解正确,我的电脑是主机1,而我想连接的主机是host2,那么此隧道会在端口5000和端口23之间建立连接,然后在端口22上连接?

    为什么要切换端口的原因? 可以使用端口22创建隧道吗?

    非常有趣的文章。 像nano一样,我想要更多!

    1.    Getafix

      SSH确实的确默认使用端口22(尽管可以更改)。 该端口是两个主机之间实际通信所使用的端口。 您必须确保它是打开的并且没有防火墙将其切断。 但是对于用户而言,它是完全透明的。 你可以忘记他。 在示例中,重定向在端口5000和23之间。这两个是您唯一需要担心的。 用户将看到他发送到其主机的端口5000的所有内容都显示在目标主机的23处。
      显然,每个用户都可以重定向他认为合适的端口。

      感谢您的意见。 这是我的第一篇文章,您的意见将有助于使下一篇更好。

  3.   埃利奥时间3000

    VPS也可以做到吗?

  4.   猎人

    好的,这是我的情况,PC1可以访问服务器,但是PC2不能,都通过ssh连接,我想在PC2中具有访问权限,但是我应该重定向PC1的哪个端口? 如果实际上我要从PC2到达服务器端口,并且数据包以PC1作为其源IP。 我懂吗

    1.    Getafix

      你让自己理解。 在这种情况下,您需要PC1将PC2的端口重定向到服务器的端口22:

      PC2 $ ssh -L 5000:服务器:22个用户PC1 @ PC1

      并且,从另一个终端保持此连接打开:

      PC2 $ ssh userServer @本地主机-p 5000

      你已经在里面了

      1.    猎人

        最后是功能解决方案! 谢谢Getafix,您给了我无限的可能性!

        1.    Getafix

          我很高兴!

  5.   拉夫

    优秀的文章。欢迎来到 DesdeLinux ????

    如果我们有22个被阻止该怎么办? 大声笑..

    1.    Getafix

      谢谢埃拉夫。
      如果您的端口22被阻塞,mmmm,我们将不得不寻找一种替代方法来破解XD防火墙

    2.    埃利奥时间3000

      最糟糕的是(假设的):VPS提供者阻止了它。

  6.   年增长率

    几个小时前我刚刚进行了考试,并且对此有疑问😛

  7.   马里奥

    我不会说:
    host1 $ ssh -R 5000:本地主机:23 userhost2 @ host2
    它等效于另一命令行... -L。
    由于-R表示打开新连接的端口在远程侧,即ssh服务器侧; -L在本地端打开一个端口,而在客户端端打开一个端口以接收新连接。

    该行的翻译:
    host1 $ ssh -R 5000:本地主机:23 userhost2 @ host2
    就像这样:在host1上,用我的用户userhost22连接到host2的ssh服务器(端口2),并将在host5000的远程端口2上生成的连接转发到host23(我的本地主机)上的端口1

    如果没有,请纠正我! 😉

    -

    另一方面...如果服务器阻止了端口22的连接进入,即我们无法远程连接到ssh服务器; 可以做的是; 从服务器(远程host2系统的防火墙后面的朋友sysadmin)执行以下命令行:

    host2 $ nohup ssh -fN -R 6000:本地主机:22 userhost1 @ host1

    -f转到背景
    -N在遥控器上不执行任何命令
    nohup防止注销时中断命令的执行

    host1 $ ssh userhost2 @本地主机-p 6000

    通过这种方式,我们从host1在端口1上生成了到localhost(同一host6000)的连接,该连接会将连接转发到远程系统host22的端口2,我们将在其中以用户host2登录。

    这将允许(我没有尝试过,但听起来像是可行的)在内部有一点帮助的情况下登录到被firewal阻止的ssh服务器! 😀

    我从《 The Geek Stuff》杂志的解释中读到了后者
    http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/

    我真的很喜欢你的出版物; 我经常阅读它们!
    问候。

    1.    Getafix

      你是对的。 文章中有错误。 重定向不等效。 命令host1 $ ssh -R 5000:localhost:23 userhost2 @ host2执行反向重定向,即,将远程端口5000重定向到23本地,这与-L命令相反。
      谢谢你的纠正。