一般我们在用ssh登录服务器时,都是用 ssh user@host 这种命令形式,但当我们管理的机器一多,很容易忘记user或host部分,特别是当host还是ip的时候。
或者,当一条ssh命令特别复杂,需要加各种参数,在这种情况下,这条ssh命令基本是不可能记住的。
这些问题俨然已经成为了服务器管理者的一份很大的心智负担。
那怎么办呢?
其实,ssh为这些问题早就想好了对应的解决方案,我们可以在ssh的配置文件中,为各个主机配置别名,并可以同时为该主机指定各种参数,这样我们就可以在终端直接用别名方式登录,而不用再记各种user、host或者参数了。
实验看下。
首先我们在ssh的配置文件(~/.ssh/config)中添加如下内容:
Host h3 HostName 192.168.56.5 User u3 Port 22
Host h2 HostName 192.168.57.3 User u2 ProxyJump u3@192.168.56.5
Host * IdentityFile ~/.ssh/id_ed25519
该配置文件作用及含义是:
1. 为主机 192.168.56.5 指定别名 h3,同时指定登录用户为u3,目标端口为22,所以在我们登录这台机器时,可以直接用下面的方式:
$ ssh h3Last login: Tue Sep 10 11:36:23 2019 from 192.168.56.1u3@h3:~$
2. 为主机 192.168.57.3 指定别名 h2,登录用户 u2,同时还为其指定了一台跳板机 u3@192.168.56.5,在我们ssh登录h2时,ssh会先登录跳板机,再登录h2。
配置文件中的 ProxyJump 其实就相当于命令行中的 -J 参数,目的是用于指定登录目标机器的跳板机。
有关跳板机更多的介绍,请看我之前写的一篇文章:ssh技巧之跳板机。
有了这些配置,我们登录h2就可以直接使用下面的命令:
$ ssh h2Last login: Tue Sep 10 11:39:05 2019 from 192.168.57.4u2@h2:~$
很方便吧,其实还有更方便的。
ssh命令体系里其实还包括scp,在我们用ssh配置文件的形式指定了各种参数后,scp命令就可以简化成下面这个样子:
$ scp abc.txt h2:/home/u2abc.txt
如果没有上面的配置文件,我们就必须用下面的命令:
$ scp -J u3@192.168.56.5 abc.txt u2@192.168.57.3:/home/u2abc.txt
是不是简化了很多?
3. 为所有主机指定通用配置。
上面ssh配置文件中,第三个Host配置匹配的主机是 *,即所有主机,这样我们就可以在这个Host底下为所有主机添加各种通用配置了。
其实ssh配置文件功能远比本文讲述的强大及灵活,如果平时是ssh的重度用户,推荐好好看下ssh_config(5) 这个man文档。
希望对你有所帮助。
完。
本文分享自 Linux内核及JVM底层相关技术研究 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!