关于使用Azure“Run Command”为丢失SSH密钥的VM添加授权SSH密钥的疑问
关于使用Azure“Run Command”为丢失SSH密钥的VM添加授权SSH密钥的疑问
首先得说,你用Run Command把自己的公钥加到authorized_keys里的操作完全可行,而且其实和你通过门户重置SSH密钥的本质是一样的——都是依托你拥有的VM管理员权限来修改主机的SSH配置。
你觉得“这像是绕过SSH密钥机制”的顾虑很正常,但其实逻辑上站得住脚:既然你有Azure门户的全权限,你本来就拥有对这台VM的最高控制权——不管是用官方的重置密钥功能,还是用Run Command手动修改密钥文件,本质都是你在行使管理员权限,不存在“越权”或者“绕过”的问题。Azure的Run Command本身就是给有管理员权限的用户提供的远程管理工具,它的权限级别本来就很高,能执行大部分系统级操作,修改SSH授权密钥自然也在允许范围内。
至于你找不到原来的.pem文件,这是正常的:当你在Azure上创建VM生成SSH密钥对时,私钥(.pem文件)只会下载到你本地的机器上,VM的~/.ssh目录里只会存储对应的公钥(在authorized_keys里),所以你在VM里肯定找不到私钥文件,它从一开始就没存在过在VM上。
如果要实操的话,你可以用Run Command执行类似这样的命令(记得替换成你实际的用户名和公钥内容):
echo "YOUR_PUBLIC_KEY_CONTENT" >> /home/<你的用户名>/.ssh/authorized_keys
执行后就可以用对应的私钥SSH登录这台VM了。
最后补充一句,这种操作和官方重置密钥的安全性是一致的,只要你的Azure账号本身是安全的,就不用担心额外风险。
备注:内容来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

