如何同时指定 Bitbucket 存储库密钥和用户密钥,使存储库密钥为只读,用户密钥提供推送功能?
How to specify both a Bitbucket repository key and a user key such that the repository key is read-only and the user key provides push capability?
Bitbucket 提供了在存储库 上设置密钥以实现只读 访问。在不讨论以下方法的优点的情况下,我想使用此功能 git pull
将更改部署到网站(作为用户 root
),但我也想提供一个非 root
用户偶尔能够 push
使用自己的密钥从 Web 服务器访问 repo。我已将 root
的默认 id_rsa.pub
密钥指定为 Bitbucket 存储库密钥,并且 pull
(只读)功能在以 root
身份登录时有效。但是,我在尝试从特定用户 push
时收到错误消息。错误是:
Load key "/home/user1/.ssh/bitbucket": Permission denied
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.
我将 git push
作为 user1
发出,所以我不明白为什么它在尝试加载密钥时出现 Permission denied
错误。为什么 user1
不能加载和使用他自己的密钥?下面提到的两个密钥的私有部分的权限设置为 600,public 部分的权限设置为 644。
设置:
- Ubuntu 20.04
- 两个用户:root 和 user1
- root 的
id_rsa.pub
密钥已添加到 Bitbucket 存储库的 Access Keys
在 BitBucket
/root/.ssh/
中的一个 config
文件包含以下内容:
Host bitbucket.org
HostName bitbucket.org
IdentityFile /root/.ssh/id_rsa
IdentitiesOnly yes
/home/user1/.ssh/
中的 config
文件包含以下内容:
Host bitbucket.org
HostName bitbucket.org
User git_user1
IdentityFile /home/user1/.ssh/bitbucket
IdentitiesOnly yes
git remote -v
显示:
origin git@bitbucket.org:our_bitbucket_organization/website-name.git (fetch)
origin git@bitbucket.org:our_bitbucket_organization/website-name.git (push)
user1
可以从他们的开发服务器 push
到回购协议 - 用户是组织中的用户,回购协议中的用户也是如此。我也尝试在 user1
的配置文件中注释掉 User
行,但得到同样的错误。
我也研究过 this question (and especially this answer),但在其中找不到任何可以完全解决此错误的内容。我想要两个单独的 config
文件,而不是一个 config
文件。
非常感谢任何建议。
Load key "/home/user1/.ssh/bitbucket": Permission denied
该错误表示 user1
无法读取该文件。修复:
chown -R user1 /home/user1/.ssh
chmod -R u=rwX,go= /home/user1/.ssh
PS。这比仅修复一个文件更通用。以防万一
Bitbucket 提供了在存储库 上设置密钥以实现只读 访问。在不讨论以下方法的优点的情况下,我想使用此功能 git pull
将更改部署到网站(作为用户 root
),但我也想提供一个非 root
用户偶尔能够 push
使用自己的密钥从 Web 服务器访问 repo。我已将 root
的默认 id_rsa.pub
密钥指定为 Bitbucket 存储库密钥,并且 pull
(只读)功能在以 root
身份登录时有效。但是,我在尝试从特定用户 push
时收到错误消息。错误是:
Load key "/home/user1/.ssh/bitbucket": Permission denied
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.
我将 git push
作为 user1
发出,所以我不明白为什么它在尝试加载密钥时出现 Permission denied
错误。为什么 user1
不能加载和使用他自己的密钥?下面提到的两个密钥的私有部分的权限设置为 600,public 部分的权限设置为 644。
设置:
- Ubuntu 20.04
- 两个用户:root 和 user1
- root 的
id_rsa.pub
密钥已添加到 Bitbucket 存储库的 Access Keys
在 BitBucket
/root/.ssh/
中的一个 config
文件包含以下内容:
Host bitbucket.org
HostName bitbucket.org
IdentityFile /root/.ssh/id_rsa
IdentitiesOnly yes
/home/user1/.ssh/
中的 config
文件包含以下内容:
Host bitbucket.org
HostName bitbucket.org
User git_user1
IdentityFile /home/user1/.ssh/bitbucket
IdentitiesOnly yes
git remote -v
显示:
origin git@bitbucket.org:our_bitbucket_organization/website-name.git (fetch)
origin git@bitbucket.org:our_bitbucket_organization/website-name.git (push)
user1
可以从他们的开发服务器 push
到回购协议 - 用户是组织中的用户,回购协议中的用户也是如此。我也尝试在 user1
的配置文件中注释掉 User
行,但得到同样的错误。
我也研究过 this question (and especially this answer),但在其中找不到任何可以完全解决此错误的内容。我想要两个单独的 config
文件,而不是一个 config
文件。
非常感谢任何建议。
Load key "/home/user1/.ssh/bitbucket": Permission denied
该错误表示 user1
无法读取该文件。修复:
chown -R user1 /home/user1/.ssh
chmod -R u=rwX,go= /home/user1/.ssh
PS。这比仅修复一个文件更通用。以防万一