【发布时间】:2021-11-28 18:30:46
【问题描述】:
我正在尝试在 digitalocean 上运行的 ubuntu 服务器上设置与 github 的 SSH 密钥连接。
到目前为止,我已经完成了以下工作:
- 在 ~/.ssh/id_rsa 的 ubuntu 服务器上生成 SSH 密钥,无需密码
- 使用
ssh-add id_rsa为代理添加了密钥 - 在 github 中,将公钥添加到用户设置的 SSH 密钥中
通过SSH登录服务器,我可以运行ssh -T git@github.com,我会得到响应:
Hi username! You've successfully authenticated, but GitHub doesn't provide shell access
然后我尝试从 github 拉取并得到以下响应:
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我认为这与 shell 访问信息有关,但我认为我一直都是这样做的!当我在本地运行 ssh -T git@github.com 时,我得到了关于 git 不允许 shell 访问的相同信息,但它仍然允许我在尝试它们时执行所有正常的 pull/push 命令。
有人有什么建议吗?
--------- 编辑 -------------
我认为这是 sudo/非 sudo 权限的问题。我需要使用 sudo 运行所有 git 命令,但是我的 ssh 密钥不是使用 sudo 创建的,所以我认为它的访问权限错误?
我尝试使用sudo ssh-keygen 创建一个新密钥,但是现在我无法将它添加到我的代理中
如果我正常运行 eval 'ssh-agent' 然后尝试添加 sudo 生成的密钥 ssh-add sudokey,我收到一个错误,我无权对密钥执行任何操作。
如果我运行 sudo ssh-add key,我会收到一个错误,提示它无法与代理建立连接
那么我想,通过运行sudo eval 'ssh-agent' 在 sudo 下打开一个代理,然后我收到错误 sudo: eval: command not found
【问题讨论】:
-
这意味着无论您在 on 上运行什么,服务器都无法访问密钥对。当您登录到服务器并运行时,您已授予服务器(及其 ssh)访问您的密钥对的权限。当您不登录到服务器时,您在做什么,以便让服务器(及其 ssh)访问您的密钥对?
-
我想我发现 sudo 似乎没有与非 sudo 用户相同的密钥对访问权限。例如,如果我运行
sudo ssh -T git@github.com,它将无法工作。但是如何授予 sudo 访问权限?我尝试使用sudo ssh key-generate创建一个新的密钥对,但我仍然遇到同样的问题。它也不允许我 ssh 添加一个 sudo 创建的 ssh 密钥,如果我尝试sudo ssh-add key或sudo eval 'ssh-agent'我得到一个错误,即 sudo eval 不是命令 -
@torek 我用我尝试过的方法编辑了帖子
-
啊——当然:
sudo表示以其他用户身份运行,而其他用户是具有其他权限的某个其他用户。将密钥放入 用户可以访问的东西中,并可能为该用户启动一个 ssh 代理。请注意,sudo 只运行一个命令。要运行多个命令,一个命令本身需要成为一个将运行多个命令的命令。不过,一般来说,使用 sudo 的正确方法是“不要使用它”:如果有某种方法可以不使用它,那就改用它。
标签: git ubuntu github version-control