如何将GPG密钥迁移到树莓派并解决导入无有效OpenPGP数据错误
GPG密钥导入树莓派报错解决方法
报错根因
你遇到的gpg: no valid OpenPGP data found报错,核心原因是ssh 交互式输入登录密码的过程会挤占管道的输入流,导致远程树莓派上的gpg进程收到的是ssh的交互数据,而非你本地导出的GPG密钥内容。
注意:执行所有导出操作前请确认填写的
KEY_ID正确,可以先在本地执行gpg --list-secret-keys查询对应密钥的ID。
解决方法1:通过中间文件传输(操作最稳妥)
- 第一步:本地导出密钥到明文文件
# 导出私钥 gpg --armor --export-secret-key KEY_ID > secret-key.asc # 导出公钥 gpg --armor --export KEY_ID > public-key.asc
- 第二步:用scp工具将密钥文件传输到树莓派
scp secret-key.asc public-key.asc pi@bb8:/home/pi/
- 第三步:登录树莓派执行导入操作
# 登录树莓派 ssh pi@bb8 # 导入公钥 gpg --import public-key.asc # 导入私钥,按提示输入密钥密码即可 gpg --import secret-key.asc
- 第四步(必做,避免密钥泄露):导入完成后删除所有明文密钥文件
# 本地终端执行 rm secret-key.asc public-key.asc # 树莓派终端执行 rm /home/pi/secret-key.asc /home/pi/public-key.asc
解决方法2:免密登录后直接管道传输(无中间文件)
如果不想留存明文密钥文件,可以先给树莓派配置ssh公钥免密登录,再执行管道命令即可:
- 第一步:配置本地ssh公钥到树莓派信任列表,按提示输入树莓派登录密码
ssh-copy-id pi@bb8
- 第二步:直接执行导出导入命令
# 导入私钥 gpg --armor --export-secret-key KEY_ID | ssh pi@bb8 gpg --import # 导入公钥 gpg --armor --export KEY_ID | ssh pi@bb8 gpg --import
验证结果
登录树莓派执行以下命令,确认密钥导入成功:
# 查看私钥列表 gpg --list-secret-keys # 查看公钥列表 gpg --list-keys
能查询到对应KEY_ID的密钥信息即为操作成功,后续可正常使用该密钥为Git提交签名。
内容的提问来源于stack exchange,提问作者Milan Ferus-Comelo
相关产品推荐
相关产品推荐

