You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在OCI虚拟机与本地Ubuntu虚拟机间配置免密SSH的问题咨询

在OCI虚拟机与本地Ubuntu虚拟机间配置免密SSH的问题咨询

你目前的情况是:

  • 有2台托管在OCI上的Ubuntu虚拟机,还有1台本地Ubuntu虚拟机,想要配置免密SSH连接
  • 已经下载了SSH公私钥,生成了.ppk文件并通过putty-tools转换成了OpenSSH格式的私钥keyname.pem,并且能通过ssh -i keyname.pem ubuntu@123.123.123.121正常连接目标机器
  • 但执行ssh-copy-id -i keyname.pem ubuntu@123.123.123.123时,报错找不到keyname.pem.pub文件

问题原因

ssh-copy-id工具默认会尝试读取你指定的私钥文件对应的公钥文件(也就是私钥文件名加上.pub后缀),但你用puttygen转换密钥时只生成了私钥,没有同步生成对应的公钥文件,所以才会出现找不到文件的错误。

正确操作步骤

1. 从现有私钥生成对应公钥文件

在本地Ubuntu虚拟机上,执行以下命令从你的keyname.pem私钥导出公钥:

ssh-keygen -y -f keyname.pem > keyname.pem.pub

这个命令会读取私钥文件,生成对应的公钥并保存到keyname.pem.pub中。

2. 使用ssh-copy-id完成免密配置

现在有了对应的公钥文件,你可以重新执行ssh-copy-id命令,这次就能正常工作了:

ssh-copy-id -i keyname.pem ubuntu@123.123.123.123

或者你也可以直接指定公钥文件路径:

ssh-copy-id -i keyname.pem.pub ubuntu@123.123.123.123

执行后按照提示输入目标机器的Ubuntu用户密码,工具就会自动把公钥添加到目标机器的~/.ssh/authorized_keys文件中,同时设置正确的权限。

备选方案:手动配置公钥

如果ssh-copy-id还是有问题,你可以手动完成配置:

  • 先查看公钥内容:
    cat keyname.pem.pub
    
  • 用现有的密钥方式登录目标机器:
    ssh -i keyname.pem ubuntu@123.123.123.123
    
  • 在目标机器上,确保~/.ssh目录存在,然后编辑~/.ssh/authorized_keys文件,把刚才复制的公钥内容粘贴进去
  • 设置正确的权限(这一步很重要,权限不对会导致免密登录失败):
    chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
    

额外检查

配置完成后,你可以测试免密登录是否生效:

ssh ubuntu@123.123.123.123

如果还是无法免密登录,可以检查目标机器的/etc/ssh/sshd_config文件,确保以下配置项是开启的:

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

修改后记得重启SSH服务:

sudo systemctl restart sshd

备注:内容来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:10:30