为后代保留答案
我有一个脚本需要克隆在Stash中保存的仓库。回购没有开启公共访问(我们不能因内部政策而导致)。我为此脚本生成了一个新的SSH密钥对,并将公钥存储在"访问密钥" Stash中repo配置的一部分。密钥不存储在我的用户.ssh目录中(它们不在〜/ .ssh中),而是在脚本本地的.ssh目录中(script_home / .ssh,具有正确的所有权和文件权限)
什么是使用本地密钥克隆存储库的git命令?
答案 0 :(得分:0)
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
使用SSH或HTTPS时,Stash似乎没有对URL进行轻微修改。匹配的HTTPS URL是
https://actual.user@host:port/scm/project/repo.git
不要像我一样被抓住并拥有' / scm / ' SSH URI中的一部分HTTPS URI
另请注意这与Github有何不同。
使用SSH时
git clone git@github.com:some_user/some_repo.git
网址的SSH协议部分完全丢失。
使用HTTPS时
git clone https://github.com/some_user/some_repo.git
此案例中存在HTTPS协议。