通过SSH客户端配置文件管理多个秘钥
本文最后更新于:2020年9月16日 上午
摘要
本文介绍了常见的ssh多秘钥管理的方式(SSH客户端配置文件的基础知识),并介绍了一些最常见的配置选项可以通过本方式,更方便使用ssh、scp、git等命令完成认证。
背景
最近突然有了一个挺抓狂的问题,github不同项目设置了不同的ssh key,公司、自己的VPS秘钥不同,有的VPS在国外,需要连接代理,如果都需要通过SSH连接到多个远程系统,就会发现记住所有的远程IP地址,不同的用户名,非标准端口和各种命令行选项非常困难。
一种选择是为每个远程服务器连接创建一个bash别名。但是,还有另一个更好,更简单的解决方案。OpenSSH允许您设置每个用户的配置文件,可以在其中为连接到的每台远程计算机存储不同的SSH选项。
配置过程
配置的过程,简单来说,就是创建一个配置文件:~/.ssh/config
,将连接需要的参数填好即可。
预备工作
我们假设您使用的Linux或macOS系统已安装OpenSSH客户端。
SSH配置文件位置
OpenSSH客户端配置文件位于~/.ssh/config
,若没有,需要手动创建:
1 |
|
SSH配置文件结构
SSH配置文件采用如下结构:
1 |
|
- Host: 是给该主机其的别称,这里因为我的机器是腾讯云的,取名为tencent
- ServerAliveInterval: 因为腾讯云的机器,默认一段时间不操作后会断开连接,这个参数是为了保持连接的。20的意思是每20秒向服务器发送一个空字符,保持连接。
- HostName:主机名,写VPS的地址就行了。
- User:用户名
- Port:端口
- IdentityFile: 秘钥路径
基本示例配置文件
1 |
|
- Host:别称为dev
- HostName:主机名为dev.example.com
- User:用户名为john
- Port端口为2322
现在就可以输入如下命令查看效果了:
1 |
|
常用的一些其他参数
1 |
|
- IdentityFile:使用秘钥登录时的秘钥路径。
- ServerAliveInterval:部分VPS一段时间不输入字符会断开连接,这里的20表示每20秒向服务器发送一个空字符保持连接。
- ProxyCommand:代理,表示使用127.0.0.1:7891,socks5的代理连接VPS。
事实上,SSH的配置文件也被其他程序,如scp,sftp和rsync,一个常用的场景是同步文件,如我需要通过scp拷贝一个文件到远程的服务器,通常记住多个服务器的地址和配置很困难,若如上所示,完成了配置文件的设置,我们只需要输入:
1 |
|
若没有配置文件,我们需要输入非常长的命令:
1 |
|
便捷程度一目了然。