• 【ssh_config】SSH中配置多个private key


    当要使用多个不同的private key登录不同的主机时,我们可以在ssh命令里面用-i参数指定每次使用的private key文件。
    但是这样做比较发麻而且容易出错,我们可以利用~/.ssh/config文件,在让ssh自动为我们决定应该使用哪个key。

    基本方法

    最简单的办法是配置多个IdentityFile,具体例子如下:

    IdentityFile ~/.ssh/key1
    IdentityFile ~/.ssh/key2
    IdentityFile ~/.ssh/key3
    
    • 1
    • 2
    • 3

    默认情况下,我们是没有这个文件的,ssh会调用/etc/ssh/ssh_config里的配置。通常使用ssh-keygen生成的默认路径和文件名的key文件是被包含在里面的(比如id_rsaid_dsaid_ecdsa),这也就是我们不需要编写我们自己的config文件,ssh也可以正确加载私钥。
    在使用ssh链接某台主机的时候,ssh会依次尝试使用其中各个key,直到找到合适的。

    高级配置

    高级一点的方法是在config文件里指定每个hostname使用的key文件。

    # laptop
    Host mylaptop # 任意自定义名称
    HostName 192.168.0.120 # 主机地址
    IdentityFile ~/.ssh/id_rsa # 私钥文件地址
    Port 2222
    User zhangsan
    
    # cloud server
    Host server
    HostName www.my-server.com
    IdentityFile ~/.ssh/id_rsa_cloud
    User lisi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    如上,我们不仅可以配置私钥文件,还可以针对各个主机所使用的配置端口号、用户名等信息,从而大大简化ssh的使用。它还支持更多的配置选项,大家有兴趣可以查看文档。
    比如我们可以使用ssh mylaptop来替换ssh -p 2222 -i ~/.ssh/id_rsa zhangsan@192.168.0.120使用用户名zhangsan连接主机192.168.0.120的2222端口。

    值得一提的是,我们不仅可以给每一个主机都配置一个key文件,还可以在最开始指定一些默认key文件,来应用于所有未知名的远程主机。
    比如我有一个集群,和一台远程服务器,那么我们可以采用下面的配置文件来方便的登录所有这些机器。

    IdentityFile ~/.ssh/id_rsa_cluster # 默认使用本秘钥
    
    # cloud server
    Host server
    HostName www.my-server.com
    IdentityFile ~/.ssh/id_rsa_cloud
    User lisi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    2022 年杭电多校第九场补题记录
    4.6 其他安全性保护
    服务器中jdk、mysql的安装配置,以及linux一些使用的操作
    docker in docker使用方式
    C++基础特性
    22.app.js的全局数据共享
    电脑无线网卡连接的无线信号不好的,经常丢包,掉线断网如何优化解决
    d3dcompiler_43.dll是什么文件?缺失d3dcompiler_43.dll文件修复与解决方法
    线程基础概念
    学长告诉我,大厂MySQL都是通过SSH连接的
  • 原文地址:https://blog.csdn.net/yanxiangtianji/article/details/133956900