如何通过反向 SSH 隧道访问 NAT 后面的 Linux 服务器

如何通过反向 SSH 隧道访问 NAT 后面的 Linux 服务器,第1张

 除了SSH端口转发外,另一个办法就是SSH反向隧道。SSH反向隧道这个概念其实很简单。为此,你需要在限制性家用网络外面有另一个主机,即所谓的“中继主机”(relay host),你可以从所在地方通过SSH连接到该主机。你可以使用带公共IP地址的虚拟专用服务器(VPS)实例来建立中继主机。然后要做的就是建立一条持久性SSH隧道,从你家用网络的服务器通向公共中继主机。有了这条隧道,你就可以从中继主机“连回”到家用服务器(这就是为什么它叫“反向”隧道)。无论你人在什么地方,或者你家用网络中的NAT或防火墙限制多严格,只要你可以连接到中继主机,就可以连接到家用服务器。

在Linux上建立SSH反向隧道

不妨看看我们如何可以建立并使用一条SSH反向隧道。我们假设下列设置。我们将建立一条从家用服务器(homeserver)到中继服务器(relayserver)的SSH反向隧道,那样我们就可以从另一台名为clientcomputer的计算机,通过中继服务器以SSH的方式连接到家用服务器。中继服务器的公共IP地址是1.1.1.1。

在家用服务器上,打开通向中继服务器的SSH连接,如下所示。

homeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1

这里的端口10022是你可以选择的任何随意的端口号。只要确保该端口没有被中继服务器上的其他程序所使用就行。

“-R 10022:localhost:22”选项定义了反向隧道。它通过中继服务器的端口1022,将流量转发到家用服务器的端口22。

若使用“-fN”选项,一旦你成功验证了身份、登录到SSH服务器,SSH就会径直进入后台。如果你不想在远程SSH服务器上执行任何命令,只想转发端口,就像在本文的示例中,这个选项很有用。

运行上述命令后,你将直接回到家用服务器的命令提示符。

登录进入到中继服务器,核实127.0.0.1:10022绑定到sshd。如果是这样,那意味着反向隧道已正确建立起来。

relayserver~$ sudo netstat -nap | grep 10022

tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshd

现在可以从其他任何计算机(比如clientcomputer),登录进入到中继服务器。然后访问家用服务器,如下所示。

relayserver~$ ssh -p 10022 homeserver_user@localhost

需要注意的一个地方就是,你为localhost输入的SSH登录信息/密码应该适用于家用服务器,而不是适用于中继服务器,因为你是通过隧道的本地端点登录进入到家用服务器。所以别为中继服务器输入登录信息/密码。成功登录后,你就接入到了家用服务器。

通过SSH反向隧道,直接连接到NAT后面的服务器

虽然上述方法让你可以连接到NAT后面的家用服务器,但是你需要登录两次,先登录到中继服务器,然后登录到家用服务器。这是由于中继服务器上SSH隧道的端点绑定到回送地址(127.0.0.1)。

但实际上,只要单次登录到中继服务器,就可以直接连接到NAT后面的家用服务器。为此,你需要让中继服务器上的sshd不仅可以从回送地址转发端口,还可以从外部主机转发端口。这可以通过在中继服务器上运行的sshd里面指定GatewayPorts选项来实现。

打开中继服务器的/etc/ssh/sshd_conf,添加下面这一行。

relayserver~$ vi /etc/ssh/sshd_conf

GatewayPorts clientspecified

重启sshd。

基于Debian的系统:

relayserver~$ sudo /etc/init.d/ssh restart

基于红帽的系统:

relayserver~$ sudo systemctl restart sshd

现在不妨从家用服务器开始建立SSH反向隧道,如下所示。

homeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

登录进入到中继服务器,用netstat命令核实SSH反向隧道已成功建立起来。

relayserver~$ sudo netstat -nap | grep 10022

tcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: dev

不像之前的情况,隧道的端点现在是1.1.1.1:10022(中继服务器的公共IP地址),而不是127.0.0.1:10022。这意味着,可以从外部主机连接到隧道端点。

现在可以从其他任何计算机(比如clientcomputer),输入下列命令,访问NAT后面的家用服务器。

clientcomputer~$ ssh -p 10022 homeserver_user@1.1.1.1

在上述命令中,虽然1.1.1.1是中继服务器的公共IP地址,但homeserver_user必须是与家用服务器关联的用户帐户。这是由于,你实际登录进入的主机是家用服务器,而不是中继服务器。后者只是将你的SSH流量中继转发到家用服务器而已。

在Linux上建立持久性SSH反向隧道

想必你已明白了如何建立一条SSH反向隧道,现在不妨让隧道具有“持久性”,那样隧道随时建立并运行起来(无论面对什么样的情况:暂时网络拥塞、SSH超时还是中继主机重启等)。毕竟,要是隧道没有始终建立起来,你也就无法可靠地连接到家用服务器。

为了建立持久性隧道,我要使用一款名为autossh的工具。顾名思义,万一SSH会话由于任何原因而断开,这个程序让你可以自动重启SSH会话。所以,让SSH反向隧道保持持久连接很有用。

第一步,不妨建立无需密码的SSH登录机制,从家用服务器登录到中继服务器。那样一来,autossh就能重启断开的SSH反向隧道,不需要用户干预。

下一步,将autossh安装到发起隧道的家用服务器上。

从家用服务器运行带下列变量的autossh,从而建立一条通向中继服务器的持久性SSH隧道。

homeserver~$ autossh -M 10900 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

“-M 10900”选项指定了中继服务器上的一个监控端口,将用来交换测试数据,以监控SSH会话。该端口不应该被中继服务器上的任何程序所使用。

“-fN”选项传递给ssh命令,让SSH隧道可以在后台运行。

“-o XXXX”选项指令ssh执行下列 *** 作:

•使用密钥验证,而不是密码验证。

•自动接受(未知的)SSH主机密钥。

•每60秒就交换持久连接(keep-alive)消息。

•最多发送3个持久连接消息,而不接受任何响应。

与SSH反向隧道有关的其余选项仍与之前一样。

如果你希望SSH隧道一启动就自动建立起来,可以在/etc/rc.local中添加上述的autossh命令。

在Linux服务器上查看CPU详细信息:

cat /proc/cpuinfo

输出结果:

上面只截取了一部分信息,

完整的CPU信息请参考文末附录,

这个命令输出了太多的冗余信息不方便查看,

下面介绍的命令以该Linux输出的CPU信息为例,

可以很方便的知道当前系统CPU的特定信息。

请参考以下文章了解CPU的一些基本概念:

物理CPU,物理CPU内核,逻辑CPU概念详解

cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

输出结果:

2

表示Linux服务器上面实际安装了2个物理CPU芯片。

cat /proc/cpuinfo | grep "cpu cores" | uniq

输出结果:

cpu cores : 8

表示1个物理CPU里面有8个物理内核。

cat /proc/cpuinfo | grep "processor" | wc -l

输出结果:

32

表示Linux服务器一共有32个逻辑CPU。

cat /proc/cpuinfo | grep 'siblings' | uniq

输出结果:

siblings : 16

表示每个物理CPU中有16个逻辑CPU,

一共有2个物理CPU,

所以总共有32个逻辑CPU,

和第5步中查看的结果一致。

cat /proc/cpuinfo | grep -e "cpu cores" -e "siblings" | sort | uniq

输出结果:

cpu cores : 8

siblings : 16

看到cpu cores数量是siblings数量一半,说明启动了超线程。

如果cpu cores数量和siblings数量一致,则没有启用超线程。

cpuinfo输出了详细的信息,

可以看到CPU具体型号等各种参数,

下面说明各个输出项的含义:

14、/proc/cpuinfo 文件(查看CPU信息)

Linux CPU数量判断,通过/proc/cpuinfo.

2019年即将结束。虽然Linux的世界确实提供了很多选择,但一开始它可能会让人不知所措。这就是为什么我们准备本指南来帮助您选择最适合您需要的Linux发行版的原因。

有些发行版在一种任务上表现更好,有些则是多面手,依此类推。因此,让我们找到最适合您的:

1.最适合初学者的发行版:Linux Mint

开源软件和Linux的普及度逐年增加,并且越来越多的人正在学习Linux。对于那些用户,选择具有平滑学习曲线的Linux发行版至关重要。这种易用性是为初学者推荐Linux发行版时要牢记的最有价值的一点。

Linux Mint 是发展最快的Linux发行版之一。在普及竞赛中,它一直在挑战Ubuntu。除此之外,Linux Mint凭借其近乎完美的桌面体验,已确立了自己作为Windows *** 作系统的完美替代品的地位。我之所以将其称为最佳的Linux新发行版,是因为它能够为用户提供开箱即用的体验。这意味着您无需花费大量时间来安装发行版和软件包,就可以完成一些真正的工作。它的占地面积不大,这是另一个要点。

为什么最适合初学者?

在此处访问Linux Mint的网站。

针对Linux新用户的其他建议:

2.适用于旧硬件的最佳Linux发行版:Ubuntu MATE

对于那些相信Internet安全重要性的人们来说,看到Windows XP在政府办公室和银行中到处可见令人沮丧。但是,我们有许多Linux发行版形式的可靠且安全的替代方案。在确定适用于过时硬件的最佳Linux发行版时,低占用空间和轻便是主要因素。

要在2019年在较旧的PC上运行Linux,建议您使用 Ubuntu MATE 。最新的19.04版本是对18.10版本的较小升级。根据您的喜好,您可以从大量布局选项中进行选择,例如Mutiny,Cupertino,Traditional,Netbook,Redmond等。如果您想要一个更加稳定的系统,则可以选择Ubuntu MATE 18.04 LTS版本来确保您的计算机保持更新很长时间。

Ubuntu MATE的最低硬件要求仅为512MB。32位ISO的可用性是我在最佳Linux发行版列表中推荐它的另一个原因。随着越来越多的发行版疏远了这种垂死的体系结构,Ubuntu MATE是为数不多的积极开发的选项之一。

为什么要为旧计算机选择Ubuntu MATE?

要获取其ISO映像,请访问 Ubuntu MATE网站。

有一台旧电脑?您还可以尝试以下 *** 作:

3.最佳的黑客Linux:Kali Linux

对于黑客, Kali Linux 绝对是无可匹敌的。它带有数百个有用的工具,这些工具属于不同类别,例如漏洞分析,无线攻击,Web应用程序,利用工具,压力测试,取证工具等。基于Debian Testing分支,该发行版中的大多数软件包都是从Debian导入的。最近的2019.3版本也标志着Offensive Security和Cloudflare之间建立合作关系的开始,以确保以更可靠的方式更新。

除了功能齐全的台式机,Kali还可以安装在Raspberry Pi,Ordroid,Chromebook,BeagleBone等上。随着Kali NetHunter的到来,它也可用于Android智能手机。

为什么要安装Kali进行道德黑客攻击?

访问Kali Linux网站进行下载。

还有什么可以尝试进行道德黑客攻击的?

4. Linux 游戏 发行版:Manjaro

即使在今天, 游戏 玩家也不要沿着Linux前进。好吧,鉴于Linux平台的 游戏 可用性较低,不能怪他们。但是,随着越来越多的Linux版本发行,这种情况在过去几年中发生了变化。

虽然2018年最佳Linux发行版列表将Steam OS视为 游戏 的最佳选择,但最新版本将 Manjaro Linux 标记为 游戏 的最佳选择。预装Steam并提供出色的硬件支持是Manjaro方面的一大好处。Manjaro还附带了硬件检测工具,以使整体图形和驱动程序情况清晰可见。如果这听起来很麻烦,请让我告诉您它随附了为Nvidia和AMD卡预安装的图形驱动程序。该发行版还提供了一种在Linux内核之间进行切换的简便方法,以确保获得更好的硬件支持。

在过去的几年中,基于Arch的Manjaro开发了一个忠实的用户群,从而确保其论坛对任何新用户都有用。

为什么要在Manjaro上玩 游戏 ?

抓住Manjaro OS的 游戏 在这里。

其他 游戏 发行版:

5.用于编程的Linux发行版:Debian

我认为没有必要强调这样一个事实,即大多数Linux用户要么是每天使用它来创建新事物的开发人员,要么是某种开源爱好者。事实证明,许多Linux发行版都可以根据他们的要求适合程序员。他们可以安装所有必需的工具,但是通常建议将Debian GNU / Linux作为最佳选择。

Debian Testing分支拥有大量软件包,这些软件包以定期测试,更新和坚如磐石而著称。这种稳定性使程序员可以放心地进行开发。但是,应该记住,仅对具有Linux使用经验的程序员推荐使用Debian。如果您是初学者,则应根据个人喜好使用Ubuntu LTS版本或其他稳定的Linux发行版。

为什么选择Debian进行编程?

Debian网站上有ISO下载和更多信息。

开发人员还有更多选择:

6.最漂亮的Linux发行版:基本OS

最漂亮的Linux发行版不是可以真正判断 *** 作系统功能的标准,但是每当有人选择新发行版时,它就起着重要作用。得益于Linux生态系统提供的灵活性,开发人员可以创建吸引人的新发行版。以我的观点和经验,基于Ubuntu的 基本OS 是最漂亮的Linux发行版,也以其无与伦比的性能而闻名。

Windows和macOS的这种快速,开源的替代品借鉴了macOS的一些设计元素。基本 *** 作系统不附带许多默认的Ubuntu应用程序,因此也提供了轻量级的体验。借助基于GNOME的Pantheon桌面环境,基本OS与Plank,Epiphany和Scratch等应用程序进行了深度集成。总体而言,有经验的初学者都可以使用它来执行日常计算任务。

为什么选择基本 *** 作系统的外观?

访问 基本 *** 作系统网站 进行下载。

其他漂亮的Linux发行版:

7.适用于儿童的Linux发行版:Ubermix

如今,由于行业需求的增长,学习Linux和开源技术可能变得非常重要。但是,孩子呢?如果您想知道是否为孩子们创建了一些很棒的 Linux发行版。好吧,别无所求,因为这些免费的 *** 作系统易于设置和使用。

我建议 Ubermix 是一个对儿童友好的Linux发行版。这个免费的,专门构建的 *** 作系统还附带触摸支持,对于喜欢用手 探索 事物的孩子来说,它是一个绝佳的选择。它试图成为学生和老师的绝佳工具。借助其5分钟的安装,60个有用的免费预加载应用程序以及20秒的恢复过程,Ubermix成为了学生和教师的强大发行版。

为什么为孩子选择Ubermix?

请访问Ubermix网站以获取更多详细信息。

教育性Linux发行版的更多选择

8. Linux发行版的隐私和匿名性:尾巴

如果我告诉你爱德华·斯诺登使用(使用)Tails Linux发行版进行通信和浏览Web,那么有些人可能会想知道这样做的原因是什么。你们中有些人会有一个粗略的主意。Tails的名字叫“ Amnesic Incognito Live System”,它是安全的Web浏览的流行选择。

可以使用DVD或USB映像在几乎任何计算机上启动 Tails live *** 作系统。这个基于Debian的安全发行版可确保所有Internet连接都被强制通过Tor网络。这样,您最终就不会在计算机上留下任何痕迹。它还带有许多加密工具,可帮助您加密电子邮件,文件和即时消息。对于注重隐私的人士,还有其他选择。

为什么选择尾巴来匿名?

访问Tails网站下载

注重隐私的Linux用户的更多选择:

9.服务器Linux发行版:CentOS

您能想象在不稳定且频繁发生故障的Linux发行版上安装服务器吗?这个问题的答案很明显。其他重要因素还包括硬件支持,安全性,电源效率和优化的性能。在这种情况下,有许多免费和付费的选择 ,而CentOS是我在此类别中的推荐。

在Linux桌面世界中,RHEL在企业领域的地位与Ubuntu相同。 CentOS 是无需花费一次费用即可获得RHEL好处的方法。换句话说,CentOS是社区支持的RHEL。由于它与RHEL的二进制版本兼容,并且其存储库包含所有经过测试的软件,因此您可以将其用作生产系统或服务器。它也以通用Linux发行版而闻名。

为什么选择CentOS作为服务器?

访问CentOS网站下载

服务器的其他Linux发行版:

10.适用于功能强大的PC和笔记本电脑的Linux发行版:Ubuntu

Canonical的Ubuntu无需在开源世界中进行介绍。基于Debian架构,Ubuntu设法平衡了稳定性和新功能,这是其他发行版所无法比拟的。这就是为什么它享有无与伦比的人气。如果您运行的计算机的硬件功能有限,则应尝试使用Ubuntu MATE,Xubuntu或Lubuntu等Ubuntu版本。

对于功能强大的PC和笔记本电脑,旗舰 运行GNOME桌面的 Ubuntu 非常适合。随着Snaps的推出,安装应用程序变得更加舒适。它还拥有繁荣的用户社区和论坛,您可以在其中找到任何问题的答案。总体而言,Ubuntu是一个功能强大的Linux发行版,可让您执行多任务并高效地完成工作。

为什么要为功能强大的PC选择Ubuntu?

访问Ubuntu网站下载

适用于功能强大的PC的其他Linux发行版:

还想要其他东西吗?还有更多

那不是全部。有更多类别的Linux发行版可供使用。您可以得到一个用于磁盘管理,应急CD,Raspberry Pi,多媒体制作,Docker,NAS,媒体中心等的工具。但是,在本文中,我将自己限制在流行类别中。在将来的更新中,我将在此最佳Linux发行版选择指南中添加更多类别,以帮助更多读者。

继续阅读Fossbytes,并在下面的注释中共享您喜欢的Linux发行版的名称。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8323747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存