Mac通过SCP向Azure Ubuntu VM传VHD.gz遇权限问题求助
解决Mac通过scp向Azure Ubuntu VM传输VHD.gz时的Permission denied (publickey)问题
错误原因
- Azure Ubuntu虚拟机默认禁止root用户通过SSH(包括scp)直接登录,这是预设的安全策略,所以用
root@<VM_IP>发起连接必然触发权限拒绝。 - scp基于SSH协议运行,不需要提前单独建立SSH连接,但必须确保SSH公钥认证能正常通过。
正确操作步骤
- 使用默认管理员账号
azureuser执行scp命令,这是Azure Ubuntu VM默认创建的有权限的用户:scp path/to/XXXvhd.gz azureuser@<Ubuntu_VM_IP>:/home/azureuser - 如果仍然提示publickey错误,检查本地公钥是否已配置到VM:
- 本地Mac终端执行
cat ~/.ssh/id_rsa.pub获取你的SSH公钥内容 - 通过azureuser账号登录VM(比如用
ssh azureuser@<Ubuntu_VM_IP>),将公钥添加到~/.ssh/authorized_keys文件末尾 - 确保服务器端SSH相关权限正确:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
- 本地Mac终端执行
关于权限修改的疑问解答
- 不需要修改本地Mac用户的权限,除非你的VHD.gz文件本身是当前用户无法读取的状态(这种情况极少)。
- 重点调整服务器端的权限:
/home/azureuser是azureuser的家目录,默认该用户拥有写入权限,无需额外修改- 服务器的
~/.ssh目录和authorized_keys文件必须严格设置权限(700和600),否则SSH会因为权限过于宽松而拒绝公钥认证
内容的提问来源于stack exchange,提问作者jeandupont666
相关产品推荐
相关产品推荐

