需要SSH到无法访问的Linux计算机吗?让它给您打电话,然后挖掘该连接以获得您自己的远程SSH会话。我们教你怎么做。
有时,远程计算机很难接触到。他们所在的站点可能有严格的防火墙规则,或者本地管理员设置了复杂的网络地址转换规则。如果你需要连接到这样一台计算机,你怎么接触它?
让我们建立一些标签。您的计算机是本地计算机,因为它离您很近。您要连接的计算机是远程计算机,因为它与您位于不同的位置。
为了区分本文中使用的本地计算机和远程计算机,远程计算机名为“howtogeek”,运行的是ubuntulinux(带有紫色终端windows)。本地计算机名为“Sulaco”,运行Manjaro Linux(带有黄色终端窗口)。
通常,您会从本地计算机启动SSH连接,然后连接到远程计算机。在我们描述的网络场景中,这不是一个选项。不管具体的网络问题是什么,只要您不能直接用SSH连接到远程计算机,这就非常有用。
但是,如果您端的网络配置很简单,远程计算机就可以连接到您。但是,仅此一项还不足以满足您的需要,因为它不能为您提供远程计算机上的工作命令行会话。但这是一个开始。两台计算机之间已建立连接。
答案在于反向SSH隧道。
反向SSH隧道允许您使用已建立的连接建立从本地计算机到远程计算机的新连接。
因为原始连接是从远程计算机到您的,所以使用它来进行另一个方向的连接就是“反向”使用它。而且因为SSH是安全的,所以您将安全连接放在现有的安全连接中。这意味着您与远程计算机的连接在原始连接中充当专用隧道。
所以我们得到了“反向SSH隧道”这个名字
反向SSH隧道依赖于远程计算机使用已建立的连接来侦听来自本地计算机的新连接请求。
远程计算机监听本地计算机上的网络端口。如果它检测到对该端口的SSH请求,它会将该连接请求转发回它自己,并关闭已建立的连接。这提供了从本地计算机到远程计算机的新连接。
设置起来比描述起来容易。
SSH已经安装在您的Linux计算机上,但是如果本地计算机以前从未接受过SSH连接,您可能需要启动SSH守护程序(sshd)。
sudo systemctl start sshd要在每次重新启动计算机时启动SSH守护程序,请使用以下命令:
sudo systemctl enable sshd在远程计算机上,我们使用以下命令。
您可能会收到一条关于以前从未连接到本地计算机的警告。或者,当连接详细信息添加到已识别的SSH主机列表时,您可能会看到一个警告。你所看到的一切取决于是否曾经从远程计算机连接到本地计算机。
系统将提示您输入用于连接到本地计算机的帐户的密码。
注意,连接完成后,命令提示符从戴夫@howtogeek至戴夫@苏拉科。
我们现在已从远程计算机连接到本地计算机。这意味着我们可以向它发出命令。让我们使用who命令查看本地计算机上的登录名。
who我们可以看到,拥有名为dave的用户帐户的人已登录到本地计算机,而远程计算机已从IP地址192.168.4.25连接(使用相同的用户凭据)。
相关:如何在Linux中确定当前用户帐户
因为从远程计算机连接成功,并且它正在侦听连接,所以我们可以尝试从本地计算机连接到远程计算机。
远程计算机正在侦听本地计算机上的端口43022。因此,为了与远程计算机建立连接,我们要求ssh在端口43022上与本地计算机建立连接,这有点违反直觉。该连接请求将转发到远程计算机。
ssh localhost -p 43022系统会提示我们输入用户帐户密码,然后从本地计算机连接到远程计算机。我们的Manjaro电脑高兴地说:“欢迎使用Ubuntu18.04.2LTS。”。
请注意,命令提示符已从戴夫@苏拉科至戴夫@howtogeek。我们已经实现了我们的目标,使SSH连接到我们难以到达的远程计算机。
为了更方便地从远程计算机连接到本地计算机,我们可以设置SSH密钥。
在远程计算机上,键入以下命令:
ssh-keygen系统将提示您输入密码短语。您可以按Enter忽略密码短语问题,但不建议这样做。这意味着远程计算机上的任何人都可以与您的本地计算机建立SSH连接,而无需询问密码。
用符号分隔的三到四个单词将构成一个健壮的密码短语。
将生成您的SSH密钥。
我们需要把公钥传给本地计算机。使用此命令:
ssh-copy-id [email protected]系统将提示您输入要登录的用户帐户的密码,在本例中,[email protected]。
第一次从远程计算机向本地计算机发出连接请求时,必须提供密码短语。只要终端窗口保持打开状态,您就不必为将来的连接请求再次输入它。
相关:如何从Linux Shell创建和安装SSH密钥
有些隧道可能是黑暗和曲折的,但是反向SSH隧道并不是很难导航,如果你能在头脑中保持远程计算机和本地计算机之间的关系。然后倒过来。
...文本模式终端,就像您坐在它旁边一样。它还可以用于SSH隧道、SCP文件传输等。 窗户 相关:使用SSH服务器可以做的5件很酷的事情 Windows仍然没有提供内置的SSH命令。早在2015年,微软就曾对将官方SSH客户端集成到PowerShell发出过...
...态端口转发:使用ssh服务器作为代理 相关:VPN和代理有什么区别? 还有“动态端口转发”,其工作原理类似于代理或VPN。SSH客户机将创建一个SOCKS代理,您可以配置要使用的应用程序。所有通过代理发送的流量都将通过SSH服务...
...个免费的层供那些只想在购买前试用的人使用。 相关:什么是VPN,为什么我需要VPN? vpn还通常用于远程连接到工作网络,因此vpn通常不会被阻塞。然而,中国最近开始干扰vpn。免费的VPN是可用的,但一个坚实的,快速的VPN将花...
Chromebooks通过其包含的crosh shell和SSH命令提供了对SSH隧道的内置支持。SSH隧道允许您使用SSH连接,如VPN或加密代理,通过安全隧道发送浏览流量。 这允许你在公共网络上浏览时加密流量,访问地理位置阻止的内容,甚至像中国...
...主机时,将要求您再次验证其密钥指纹。 顶部 相关:为什么Chrome有这么多开放进程? Chrome包含自己的任务管理器,它向您显示哪些Chrome选项卡、扩展和插件正在使用资源。但是,Crosh还包含来自Linux的top命令,它可以显示所有...
...细信息很重要的原因是,您可以确切地看到rsync正在备份什么。想想看:如果你的硬盘坏了,开始在你不知情的情况下删除文件,然后你运行rsync脚本,它会将这些更改推送到你的备份中,从而删除你不想删除的文件的所有实例...