假设服务器上的 ssh 密码被禁用,并且我在文件“old_key.pem”中有私钥,而该服务器已经拥有公钥。
现在我生成了一对新密钥“new_key.pub”和“new_key.pem”,我想使用“old_key.pem”而不是密码将此 .pub 密钥发送到服务器。可以这样做吗?如果是,怎么办?
我面临的问题是该-i
参数由“new_key.pub”使用,现在我无法使用“old_key.pem”来验证自己的身份。
答案1
ssh-copy-id
如果您已有有效的公钥,请勿使用。做这样的事情:
ssh -i ~/.ssh/old_key [email protected] 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/new_key.pub
答案2
从我阅读文档的方式来看,如果您使用ssh-agent
,ssh-copy-id
将在那里安装所有尚未工作的密钥,所以这应该可以工作(但我还没有测试过):
# spawn a new agent for this so we know it's not keeping keys
$(ssh-agent)
# add keys
ssh-add new-key.pem old-key.pem
# check if those keys made it in
ssh-add -l
# and now add extra keys
ssh-copy-id user@remote
# stop the extra ssh-agent
kill $SSH_AGENT_PID