使用meteor-up与Digital Ocean时SSH密钥无法正常工作
解决Meteor Up (mup) SSH密钥认证失败问题
看起来你已经做了不少基础配置,但还是遇到了认证失败的问题,咱们一步步排查:
1. 先验证SSH密钥本身能否直接连接服务器
先绕过mup,直接用终端测试SSH连接:
ssh root@139.49.141.100
如果这一步都失败,说明问题出在SSH密钥的基础配置上,和mup无关,先解决这个核心问题。
2. 检查本地SSH密钥文件的权限
SSH对密钥文件的权限要求很严格,权限过宽会被拒绝使用:
# 设置.ssh目录权限为700 chmod 700 /Users/MYUSERNAME/.ssh # 设置私钥文件权限为600 chmod 600 /Users/MYUSERNAME/.ssh/id_rsa
3. 确认mup.js中的pem路径正确
你配置里写的/Users/MYUSERNAME/.ssh/id_rsa要确保是绝对正确的路径:
- 替换
MYUSERNAME为你实际的Mac用户名 - 可以用
ls /Users/MYUSERNAME/.ssh/id_rsa验证文件是否存在 - 避免使用
~简写,部分版本的mup可能无法正确解析波浪号路径
4. 核对DigitalOcean后台的公钥与本地公钥一致
本地公钥的内容必须和你在DO安全设置里添加的完全匹配:
# 查看本地公钥内容 cat /Users/MYUSERNAME/.ssh/id_rsa.pub
复制输出的完整内容(包括结尾的username@hostname部分),去DigitalOcean的Settings > Security > SSH Keys里对比,确保没有多余空格、换行或拼写错误。
5. 检查服务器端authorized_keys文件配置
用密码登录服务器后,确认你的公钥已经被正确写入~/.ssh/authorized_keys:
# 查看文件内容 cat ~/.ssh/authorized_keys # 设置正确权限 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
如果文件里没有你的公钥,手动追加进去:
echo "你的本地公钥内容" >> ~/.ssh/authorized_keys
6. 尝试使用SSH Agent认证
如果本地启用了ssh-agent,可以简化认证流程:
- 在mup.js中注释掉
pem行:// pem: '/Users/MYUSERNAME/.ssh/id_rsa', - 本地加载密钥到ssh-agent:
ssh-add /Users/MYUSERNAME/.ssh/id_rsa - 重新执行
mup setup
7. 检查服务器SSH配置
登录服务器后,确认SSH服务允许公钥认证:
- 编辑sshd配置文件:
nano /etc/ssh/sshd_config - 确保以下配置项为
yes:RSAAuthentication yes PubkeyAuthentication yes - 重启SSH服务(Ubuntu/Debian):
systemctl restart sshd
8. 更新mup到最新版本
旧版本的mup可能存在SSH认证的bug,尝试更新:
npm install -g mup
更新后重新执行mup setup
按照以上步骤逐一排查,应该能解决你的认证问题。
内容的提问来源于stack exchange,提问作者Evanss
相关产品推荐
相关产品推荐

