如何在Shell脚本中调整SSH密钥格式以导入GCP项目元数据
适配GCP项目元数据的SSH密钥格式转换方法
当前本地生成的SSH公钥格式为:
ssh-rsa AAAAB3.... username
而GCP项目元数据要求的格式为:
username:ssh-rsa AAAAB3....
之前尝试echo $USERNAME:$(cat ~/.ssh/id_rsa.pub)会保留公钥末尾的原有用户名,导致格式错误。可以通过以下几种Shell命令组合完成格式修正:
使用awk提取核心密钥部分:
echo "$USERNAME:$(awk '{print $1" "$2}' ~/.ssh/id_rsa.pub)"awk会提取公钥行的前两个字段(加密算法和密钥内容),自动剔除末尾的用户名,再和指定的用户名拼接成符合要求的格式。
使用sed删除末尾用户名:
echo "$USERNAME:$(sed 's/ .*$//' ~/.ssh/id_rsa.pub)"sed命令会删除公钥行中最后一个空格到行尾的所有内容(即原有用户名),再拼接目标用户名。
使用cut分割字段:
echo "$USERNAME:$(cut -d' ' -f1,2 ~/.ssh/id_rsa.pub)"以空格为分隔符,提取公钥的前两个字段,再与指定用户名组合。
执行以上任意命令后,输出的内容即可直接用于GCP项目元数据的SSH密钥配置。
内容的提问来源于stack exchange,提问作者yarvis
相关产品推荐
相关产品推荐

