谈谈ssh-keygen进行多host配置及使用

SSH协议在GitHub与公司私服的使用

背景

传统的Telnet、FTP协议都是使用明文传输数据,存在一定的安全风险,如果传输数据被截取,可能造成数据泄露风险,尤其对于敏感数据,泄露造成的损失无法估计。最近公司、github等平台都不再支持http方式进行代码下载工作,需要通过ssh模式进行数据传输。

什么是ssh

是一种网络安全协议,对传输的数据进行加密和安全验证,保证数据的安全。

为什么使用ssh

如果数据裸着在网上跑,被劫持的话只能任人摆布,风险无限大,可能造成个人信息泄露、公司机密泄露;

ssh-keygen的基本使用

基本配置参数

参数说明备注
-t指定算法类型常见的算法包括:rsa、dsa、ecdsa、ed25519
-f指定新生成的秘钥对的文件名称例如:-f ~/.ssh/test,生成的公钥、私钥名称为test.pub、test
-c生成秘钥对的备注信息例如:-c ‘给github使用的秘钥对’

注:详细配置参数可以参考文章最后的文档链接。

完整的使用示例

现在开始进入演示场景了,各位可以看好。。

第一幕:github要使用ssh协议传输

生成需要的秘钥对

假设要使用ed25519这个协议算法,那可以使用"-t"这个参数指定协议。为了防止本地测试时新生成的密钥对干扰已生成的,使用"-f"这个参数指定新生成的秘钥对放到测试文件中。
github生成

上述截图的核心命令为:ssh-keygen -t ed25519 -f ~/sshtest/id_ed25519
通过执行上述命令,生成了一个私钥和公钥文件:id_ed25519、id_ed25519.pub。

将生成的公钥配置到github上

上传公钥对
经过上述的两个步骤,就可以通过ssh跟github交互了

第二幕:公司私服也要切到ssh协议传输

注:为了防止新生成的ssh秘钥对跟分配给github的秘钥对冲突,一定要指定一个不同的文件名,防止把之前的秘钥对覆盖了

生成新的秘钥对

如果公司要求也用ed25519加密算法,同时为了防止新生成的秘钥对覆盖之前的秘钥对,需要指定一个不同的文件名。
ssh-keygen -t ed25519 -f ~/sshtest/company_ed25519
公司密钥对生成

如上图所示,-t指定的算法跟github密钥对算法是一样的,但是-f指定的文件路径是有所区别。在途中可以看到生成了两个秘钥对。

将新生成的公钥配置到服务端上

按照github类似的操作,在公司的私服上配置新生成的公钥即可。

第三幕:请求ssh连接时,到底选择哪一个秘钥对呢?

当本地存在多个 SSH 私钥对时,SSH 客户端(如 OpenSSH)会按照以下顺序尝试使用这些密钥对进行连接:

  1. 命令行指定的密钥:如果你在ssh命令中使用-i选项指定了某个私钥文件,SSH 客户端将首先尝试使用该密钥进行连接。

  2. 默认的密钥文件:如果没有在命令行中指定密钥,SSH 客户端会检查以下默认的密钥文件(以此顺序):
    ~/.ssh/id_rsa(RSA)
    ~/.ssh/id_dsa(DSA)
    ~/.ssh/id_ecdsa(ECDSA)
    ~/.ssh/id_ed25519(Ed25519)

  3. .ssh/config文件中的配置:如果在~/.ssh/config文件中为特定主机配置了IdentityFile选项,SSH 客户端将使用该文件指定的私钥进行连接。

  4. 其他可用的密钥:如果以上步骤都没有找到合适的密钥,SSH 客户端将尝试使用其他在~/.ssh/目录下找到的私钥文件进行连接。

如果 SSH 客户端找到了多个可能的密钥,它将依次尝试每个密钥,直到找到一个可以成功进行身份验证的密钥或尝试所有密钥都失败。为了避免这种尝试过程,你可以在~/.ssh/config文件中明确指定要使用的私钥文件。

注:通过在~/.ssh/config这个文件中指定每一个host使用哪一个密钥对是一个一劳永逸的写法。

参考文档

1、官方文档:https://www.ssh.com/academy/ssh/keygen
2、ssh介绍说明: https://info.support.huawei.com/info-finder/encyclopedia/zh/SSH.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值