为什么 ssh-add 在 MobaXterm 上失败:是权限问题吗?

问题描述 投票:0回答:2

我正在尝试使用 ssh 将我的 Windows 11 电脑链接到我的 Github 帐户(按照本指南)。我在 MobaXterm 中使用 cygwin,并且之前在 Windows 7 计算机上成功完成了该过程。这次的问题出现在尝试使用 ssh-add 添加私钥时;它产生错误

Could not add identity "/home/mobaxterm/.ssh/id_ed25519": agent refused operation
。我肯定有代理在运行。

之前的问题已确定文件权限过于宽松是导致此错误的原因。我已将持久主目录设置为 C 驱动器上的一个文件夹,并在该目录中赋予 .ssh 权限 700 和 id_ed25519 文件权限 600(并检查它们是否已应用)。但是,

ls -la /home/mobaxterm/.ssh
显示 id_ed25519 的权限为 644。我不明白权限有何不同,因为我假设 /home/mobaxterm 只是一个符号链接:如果我删除或添加目录中的文件,则会反映更改在 /home/mobaxterm 中。直接在 /home/mobaxterm 上运行 chmod 没有效果。

我将非常感谢您的帮助,因为目前我无法将文件推送到我的 GitHub!

ssh private-key mobaxterm
2个回答
4
投票

使用 MobaXterm 使用私钥进行 SSH 有两种选择:

  1. 本地终端
  2. SSH 会话

先决条件

对于这两个选项,您需要将 PPK 格式的私钥添加到 PageAnt(与 Putty 一起安装),并在 MobaXterm SSH 设置中指定您

Use external Pageant
请参阅本指南的步骤 1,了解如何向 PageAnt 添加密钥。

请注意,PageAnt 仅接受 PPK 格式的密钥,因此您可能需要将密钥对转换为此类格式。您可以使用 PuttyGen 来执行此操作(请参阅 SO 讨论此处

选项 1 - 本地终端

  • 启动本地终端并注意您当前的文件夹是

    /home/mobaxterm

  • 在 Windows 配置文件文件夹中创建指向 .ssh 目录的符号链接:

    ln -s /drives/c/Users/<YOUR_WINDOWS_USERNAME>/.ssh .ssh

  • 运行

    ssh
    ,包括您的私钥路径:

    ssh -i ~/.ssh/<MY_PRIVATE_KEY> <REMOTE_USERNAME>@<REMOTE_SERVER>

选项 2 - SSH 会话

创建一个新的 SSH 会话并配置必要的参数。具体来说,您必须检查

Use private key
并指向 PPK 文件:

其他提示:SSH 配置

关于针对 GitHub 的操作,您可以在

.ssh/config
中包含一个条目,例如:

# GitHub for <USERNAME> account
Host github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/<PPK_PRIVATE_KEY>

这样您就可以运行 git 命令,并且会自动选择适当的键。


0
投票

为了在 Linux 和 Windows 上拥有相同的配置,我这样做:

  • 使用Mobaxterm提供的内部ssh代理

  • 加载私有文件:
ssh-add /drives/c/foo/<MY_PRIVATE_KEY>

之后我就可以使用 ssh 克隆我的 git 存储库了

© www.soinside.com 2019 - 2024. All rights reserved.