Capistrano 无法使用 SSH 提取存储库
Capistrano unable to pull a Stash repository using SSH
我遵循了以下程序:
- 已创建 SSH 密钥;
- 在 Atlassian Stash 中启用了 SSH;
- 为名为 Capistrano 的 Stash 帐户添加了 SSH 密钥(Capistrano 已经使用它使用用户名和密码成功连接到 Stash)
- 使用命令
git clone ssh://git@stash.domain.com:7999/project/repository.git
测试了 SSH 连接,存储库已成功克隆;
- 在 Capistrano 项目目录中将以下行更改为
config/deploy.rb
:
set :repo_url, 'ssh://git@stash.domain.com:7999/project/repository.git'
问题是执行命令 cap production git:check
我得到以下错误行并且部署被取消:
INFO [8b21e06e] Running /usr/bin/env mkdir -p /tmp/capistrano_project_name/ as deploy@host.domain.com
DEBUG [8b21e06e] Command: /usr/bin/env mkdir -p /tmp/capistrano_project_name/
INFO [8b21e06e] Finished in 0.292 seconds with exit status 0 (successful).
DEBUG Uploading /tmp/capistrano_project_name/git-ssh.sh 0.0%
INFO Uploading /tmp/capistrano_project_name/git-ssh.sh 100.0%
INFO [376577ce] Running /usr/bin/env chmod +x /tmp/capistrano_project_name/git-ssh.sh as deploy@host.domain.com
DEBUG [376577ce] Command: /usr/bin/env chmod +x /tmp/capistrano_project_name/git-ssh.sh
INFO [376577ce] Finished in 0.036 seconds with exit status 0 (successful).
INFO [2ed5c706] Running /usr/bin/env git ls-remote --heads ssh://git@stash.domain.com:7999/project/repository.git as deploy@host.domain.com
DEBUG [2ed5c706] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/capistrano_project_name/git-ssh.sh /usr/bin/env git ls-remote --heads ssh://git@stash.domain.com:7999/project/repository.git )
DEBUG [2ed5c706] Permission denied (publickey).
DEBUG [2ed5c706] fatal: Could not read from remote repository.
DEBUG [2ed5c706]
DEBUG [2ed5c706] Please make sure you have the correct access rights
DEBUG [2ed5c706] and the repository exists.
(Backtrace restricted to imported tasks)
cap aborted!
Exception while executing as deploy@host.domain.com: git exit status: 128
git stdout: Nothing written
git stderr: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Tasks: TOP => git:check
(See full trace by running task with --trace)
我已经尝试将变量简单地更改为 set :repo_url, 'ssh://git@stash.domain.com:7999/project/repository.git'
,但我收到了同样的错误。
有人通过 SSH 成功地将 Capistrano 连接到 Stash 吗?
你能建议我如何调试它吗?我想避免在我的 Capistrano 配置文件中使用用户名和密码。
一个简单的答案,但我猜 Capistrano 选错了钥匙。我建议您检查部署用户的默认 ssh 密钥。因此,如果 capistrano 设置为使用 deployuser
登录服务器,请查看 deployuser
选择的是什么键。使用 ssh -T git@stash.domain.com -p 7999
进行测试并查看返回结果会很有帮助。
我遵循了以下程序:
- 已创建 SSH 密钥;
- 在 Atlassian Stash 中启用了 SSH;
- 为名为 Capistrano 的 Stash 帐户添加了 SSH 密钥(Capistrano 已经使用它使用用户名和密码成功连接到 Stash)
- 使用命令
git clone ssh://git@stash.domain.com:7999/project/repository.git
测试了 SSH 连接,存储库已成功克隆; - 在 Capistrano 项目目录中将以下行更改为
config/deploy.rb
:set :repo_url, 'ssh://git@stash.domain.com:7999/project/repository.git'
问题是执行命令 cap production git:check
我得到以下错误行并且部署被取消:
INFO [8b21e06e] Running /usr/bin/env mkdir -p /tmp/capistrano_project_name/ as deploy@host.domain.com
DEBUG [8b21e06e] Command: /usr/bin/env mkdir -p /tmp/capistrano_project_name/
INFO [8b21e06e] Finished in 0.292 seconds with exit status 0 (successful).
DEBUG Uploading /tmp/capistrano_project_name/git-ssh.sh 0.0%
INFO Uploading /tmp/capistrano_project_name/git-ssh.sh 100.0%
INFO [376577ce] Running /usr/bin/env chmod +x /tmp/capistrano_project_name/git-ssh.sh as deploy@host.domain.com
DEBUG [376577ce] Command: /usr/bin/env chmod +x /tmp/capistrano_project_name/git-ssh.sh
INFO [376577ce] Finished in 0.036 seconds with exit status 0 (successful).
INFO [2ed5c706] Running /usr/bin/env git ls-remote --heads ssh://git@stash.domain.com:7999/project/repository.git as deploy@host.domain.com
DEBUG [2ed5c706] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/capistrano_project_name/git-ssh.sh /usr/bin/env git ls-remote --heads ssh://git@stash.domain.com:7999/project/repository.git )
DEBUG [2ed5c706] Permission denied (publickey).
DEBUG [2ed5c706] fatal: Could not read from remote repository.
DEBUG [2ed5c706]
DEBUG [2ed5c706] Please make sure you have the correct access rights
DEBUG [2ed5c706] and the repository exists.
(Backtrace restricted to imported tasks)
cap aborted!
Exception while executing as deploy@host.domain.com: git exit status: 128
git stdout: Nothing written
git stderr: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Tasks: TOP => git:check
(See full trace by running task with --trace)
我已经尝试将变量简单地更改为 set :repo_url, 'ssh://git@stash.domain.com:7999/project/repository.git'
,但我收到了同样的错误。
有人通过 SSH 成功地将 Capistrano 连接到 Stash 吗?
你能建议我如何调试它吗?我想避免在我的 Capistrano 配置文件中使用用户名和密码。
一个简单的答案,但我猜 Capistrano 选错了钥匙。我建议您检查部署用户的默认 ssh 密钥。因此,如果 capistrano 设置为使用 deployuser
登录服务器,请查看 deployuser
选择的是什么键。使用 ssh -T git@stash.domain.com -p 7999
进行测试并查看返回结果会很有帮助。