扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
举例来说,假设你已经有了远程网络上多台电脑的存取权限,但是只能通过一台堡垒主机来连接它们。假如这个连接远程网络的“网关”是在一台机器上(该机器在本文中被称为“警卫”),而且支持ssh连接。那么通过这个系统,你就可以ssh到其他系统上。不过,要想对其他系统进行任何存取的话,你就必须通过“警卫”才能进行。
一个传统的登录情景就会看起来类似下面这样:
[me@myhost]$ ssh guard.example.com
[me@guard]$ ssh work1
如果你常常需要连到这些系统(比如work1)上的话,那么这个先连接“警卫”,然后再连接其他系统的过程将会非常的令人厌烦。OpenSSH可以让我们使用一点小技巧来解决这个问题,你只要简单的从本地系统上ssh work1,然后直接登录远程的work1系统即可,而无须再首先登录到“警卫”上。
具体做法是:编辑你的“~/.ssh/config”文件。这里你将需要添加几行,以保证配置正确。
Host guard guard.example.com
Hostname guard.example.com
ForwardAgent yes
ForwardX11 no
LocalForward 9001 10.0.2.50:22
LocalForward 9002 10.0.2.51:22
LocalForward 9003 10.0.2.52:22
Host w1 w2 w3
ForwardAgent yes
ForwardX11 no
Hostname localhost
NoHostAuthenticationForLocalhost yes
Host w1
Port 9001
Host w2
Port 9002
Host w3
Port 9003
本质上来说,你所做的就是进行了几个主机的配置,以允许你方便的连接远程工作系统(这些远程系统名字分别就是“w1”,“w2”,“w3”,远程系统叫什么名字其实并不重要,因为你是通过在LocalForward声明中所注明的IP地址来进行连接的)。除了"NoHostAuthenticationForLocalhost"这个关键词外,其他的我觉得都是一看就明,无须多说。
而"NoHostAuthenticationForLocalhost"这个关键词主要是用于防止在每一次连接远程系统时ssh进行抱怨;因为每一次连接都通过localhost,然后到一台完全不同的物理主机上,ssh会注意到对“localhost”而言,它的host一直在不断的变化之中,所以如果没有这个关键词选项的话,ssh必然会进行抱怨的。
现在,你需要启动你的“主连接”,它将成为控制频道,而所有到远程系统的连接必须通过它。该连接将需要到“警卫”的认证,并保持一直处于开放状态。
$ ssh -fMN guard
这个命令会在后台打开主连接,现在你就可以简单的通过“ssh w1”或者“ssh w2”这样的命令来连接这些远程系统了。同样,这也可以让你简单的从本地系统scp文件到远程系统上,而无须再重复拷贝两次文件:第一次将文件拷贝到”“警卫”机器上,第二次再从“警卫”中拷贝到远程系统上。
(责任编辑:陈毅东)
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者