使用自定义 SSH 密钥从 Atlassian Stash/BitBucket 克隆
Clone from Atlassian Stash/BitBucket using custom SSH key
为后代保留答案
我有一个脚本需要克隆存储在 Stash 中的存储库。回购没有打开 public 访问权限(由于内部政策,我们不能)。我已经为该脚本生成了一个新的 SSH 密钥对,并将 public 密钥存储在存储库配置的 "Access Keys" 部分中。密钥未存储在我的用户 .ssh 目录中(它们不在 ~/.ssh 中),而是在脚本本地的 .ssh 目录中(script_home/.ssh,具有正确的所有权和文件权限)
什么是 git 使用本地密钥克隆存储库的命令?
GIT_SSH_COMMAND='ssh -i /path/to/script/.ssh/id_rsa' git clone ssh://git@host:port/project/reponame.git
你需要在 -i 选项中使用绝对路径,我找到了。
如果您不喜欢 git 命令前的 GIT_SSH_COMMAND 设置,您也可以使用 ssh-add
ssh-add /path/to/script/.ssh/some_private_key
git clone ssh://git@host:port/project/reponame.git
并不是说 Stash 在使用 SSH 或 HTTPS 时似乎稍微修改了 URLS。匹配的 HTTPS URL 是
https://actual.user@host:port/scm/project/repo.git
不要像我一样在 SSH URI
中使用 HTTPS URI 的“/scm/”部分
另请注意这与 Github 有何不同。
使用 SSH 时
git clone git@github.com:some_user/some_repo.git
URL 的 SSH 协议部分完全缺失。
使用 HTTPS 时
git clone https://github.com/some_user/some_repo.git
并且在这种情况下存在 HTTPS 协议。
为后代保留答案
我有一个脚本需要克隆存储在 Stash 中的存储库。回购没有打开 public 访问权限(由于内部政策,我们不能)。我已经为该脚本生成了一个新的 SSH 密钥对,并将 public 密钥存储在存储库配置的 "Access Keys" 部分中。密钥未存储在我的用户 .ssh 目录中(它们不在 ~/.ssh 中),而是在脚本本地的 .ssh 目录中(script_home/.ssh,具有正确的所有权和文件权限)
什么是 git 使用本地密钥克隆存储库的命令?
GIT_SSH_COMMAND='ssh -i /path/to/script/.ssh/id_rsa' git clone ssh://git@host:port/project/reponame.git
你需要在 -i 选项中使用绝对路径,我找到了。
如果您不喜欢 git 命令前的 GIT_SSH_COMMAND 设置,您也可以使用 ssh-add
ssh-add /path/to/script/.ssh/some_private_key
git clone ssh://git@host:port/project/reponame.git
并不是说 Stash 在使用 SSH 或 HTTPS 时似乎稍微修改了 URLS。匹配的 HTTPS URL 是
https://actual.user@host:port/scm/project/repo.git
不要像我一样在 SSH URI
中使用 HTTPS URI 的“/scm/”部分另请注意这与 Github 有何不同。
使用 SSH 时
git clone git@github.com:some_user/some_repo.git
URL 的 SSH 协议部分完全缺失。
使用 HTTPS 时
git clone https://github.com/some_user/some_repo.git
并且在这种情况下存在 HTTPS 协议。