Skip to content

Latest commit

 

History

History
65 lines (47 loc) · 2.41 KB

ssh config的使用技巧.md

File metadata and controls

65 lines (47 loc) · 2.41 KB

ssh是运维和后端程序员每天都会频繁使用的工具,登录各种测试或者生产环境的主机来查看机器状态或者调试问题等。 如果公司很小就几台机器可能还好,如果需要管理的机器比较多怎么办?像下面这样的各种username,ip,port很难记住

ssh zhangsan@192.168.1.10
ssh root@172.16.10.1
ssh google@8.8.8.8

如果能够设置别名就好了,比如ssh nginx, ssh k8s-master, ssh mysql, ssh test-nginx. 有的人通过设置shell alias搞定,不过alias不能有空格,那就得是ssh-nginx这样了, 但是这样的话对于scp以及其他的依赖ssh的工具就不起作用了。有更好的方式么?

其实ssh本身就有这样的配置,以ssh zhangsan@192.168.1.10为例, 在~/.ssh/config文件里做如下配置(如果文件不存在,直接新建一个就可以)

Host nginx
   HostName 192.168.1.10
   Port 22
   User zhangsan

然后就可以ssh nginx来替代了,因为22是默认端口,所以Port 22可以不配置. 这样配置有很多好处:

  • scp也可以用,比如 scp nginx:/tmp/xx ./或者 scp ./xxx nginx:/tmp都可以.
  • 虽然配置的User是zhangsan, 但是也可以用 ssh root@nginx来切换其他用户.
  • 很多其他应用比如ansible也是支持的

ssh的配置项非常多,上面只是配置了最简单的三个,如果有其他需要配置的也是一样的,比如

Host k8s
    HostName 172.16.10.1
    ForwardAgent yes
    Port 2222
    CheckHostIp no
    ProxyCommand ssh jumper -W %h:%p
    IdentityFile ~/.ssh/k8s_rsa
    User root

如果有些配置是常规的需要对所有的Host生效,可以这样配置

Host *
    ServerAliveInterval 60

从openssh 7.3p1开始, ssh config支持Include指令了,如果管理的机器比较多(个人/公司/开发/测试), 可以类似这样组织

In ~/.ssh/config
    Include dev_config
    Include prod_config
    Include my_personal_config
    Host *
        ServerAliveInterval 60

In ~/.ssh/dev_config
    Host dev_node1
        XXX

In ~/.ssh/prod_config
    Host prod_k8s
        XXX

想了解更丰富的ssh的配置,可以man ssh_config查看.

按照上面的范例,我们可以配置更多的host,以后就可以ssh nginx, ssh mysql这样玩啦.

这篇是从我的头条号搬过来的,链接地址.