Capistrano 和 Bitbucket 权限被拒绝
Capistrano and Bitbucket permission denied
我正在尝试使用我的 Rails 应用程序设置 Capistrano 并使用 digitalocean 进行托管。
我有一个 Ubuntu 服务器 运行 unicorn 和 nginx。
我的 capistrano 部署在此阶段一直失败:
DEBUG [08cab5b3] Command: cd /home/rails/automata && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/automata/git-ssh.sh /usr/bin/env git clone --mirror git@bitbucket.org:automata_tech/staging.git /home/rails/automata/repo )
DEBUG [08cab5b3] Cloning into bare repository '/home/rails/automata/repo'...
DEBUG [08cab5b3] /home/rails/automata/repo: Permission denied
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deployer@178.62.4.140: git exit status: 1
git stdout: Nothing written
git stderr: Cloning into bare repository '/home/rails/automata/repo'...
/home/rails/automata/repo: Permission denied
SSHKit::Command::Failed: git exit status: 1
git stdout: Nothing written
git stderr: Cloning into bare repository '/home/rails/automata/repo'...
/home/rails/automata/repo: Permission denied
Tasks: TOP => git:create_release => git:update => git:clone
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as deployer@178.62.4.140: git exit status: 1
git stdout: Nothing written
git stderr: Cloning into bare repository '/home/rails/automata/repo'...
/home/rails/automata/repo: Permission denied
我已经在服务器上生成了一个 ssh 密钥并将其添加到我的 bitbucket 帐户中。
如果我通过 ssh 连接到服务器并 git 克隆存储库,就可以正常工作。
运行 ssh -T git@bitbucket.org 在服务器上 returns:
logged in as company.
You can use git or hg to connect to Bitbucket. Shell access is disabled.
staging.rb :
set :ssh_options, {
forward_agent: true,
auth_methods: %w(publickey)
}
在你的config/deploy/production.rb(或staging.rb)中,你需要启用ssh代理转发。
您可以通过将服务器文件更改为包含 forward_agent: true
.
来完成此操作
这是一个例子:
server 'xxx.xxx.xxx.xxx',
user: 'deploy',
roles: %w{web app db},
ssh_options: {
forward_agent: true,
auth_methods: %w(publickey)
}
您的错误消息显示在尝试创建目录 /home/rails/automata/repo
时出现 permission denied
错误。换句话说,您的部署者用户没有必要的文件权限。它与您的 SSH 密钥或 Bitbucket 无关。
只需确保 /home/rails/automata
存在并归 deployer
所有。您可能需要使用 sudo
或以 root
身份登录才能执行此操作。
mkdir -p /home/rails/automata
chown deployer /home/rails/automata
顺便说一句,我不确定将您的应用放在 /home/rails
中是否有意义。如果您使用 deployer
来部署您的应用程序(并因此成为应用程序的所有者),将它放在 /home/deployer
中不是更有意义吗?或者在像 /var/www/automata
这样的 "neutral" 位置(正如 Capistrano 默认建议的那样)?
我正在尝试使用我的 Rails 应用程序设置 Capistrano 并使用 digitalocean 进行托管。
我有一个 Ubuntu 服务器 运行 unicorn 和 nginx。
我的 capistrano 部署在此阶段一直失败:
DEBUG [08cab5b3] Command: cd /home/rails/automata && ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/automata/git-ssh.sh /usr/bin/env git clone --mirror git@bitbucket.org:automata_tech/staging.git /home/rails/automata/repo )
DEBUG [08cab5b3] Cloning into bare repository '/home/rails/automata/repo'...
DEBUG [08cab5b3] /home/rails/automata/repo: Permission denied
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deployer@178.62.4.140: git exit status: 1
git stdout: Nothing written
git stderr: Cloning into bare repository '/home/rails/automata/repo'...
/home/rails/automata/repo: Permission denied
SSHKit::Command::Failed: git exit status: 1
git stdout: Nothing written
git stderr: Cloning into bare repository '/home/rails/automata/repo'...
/home/rails/automata/repo: Permission denied
Tasks: TOP => git:create_release => git:update => git:clone
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as deployer@178.62.4.140: git exit status: 1
git stdout: Nothing written
git stderr: Cloning into bare repository '/home/rails/automata/repo'...
/home/rails/automata/repo: Permission denied
我已经在服务器上生成了一个 ssh 密钥并将其添加到我的 bitbucket 帐户中。
如果我通过 ssh 连接到服务器并 git 克隆存储库,就可以正常工作。
运行 ssh -T git@bitbucket.org 在服务器上 returns:
logged in as company.
You can use git or hg to connect to Bitbucket. Shell access is disabled.
staging.rb :
set :ssh_options, {
forward_agent: true,
auth_methods: %w(publickey)
}
在你的config/deploy/production.rb(或staging.rb)中,你需要启用ssh代理转发。
您可以通过将服务器文件更改为包含 forward_agent: true
.
这是一个例子:
server 'xxx.xxx.xxx.xxx',
user: 'deploy',
roles: %w{web app db},
ssh_options: {
forward_agent: true,
auth_methods: %w(publickey)
}
您的错误消息显示在尝试创建目录 /home/rails/automata/repo
时出现 permission denied
错误。换句话说,您的部署者用户没有必要的文件权限。它与您的 SSH 密钥或 Bitbucket 无关。
只需确保 /home/rails/automata
存在并归 deployer
所有。您可能需要使用 sudo
或以 root
身份登录才能执行此操作。
mkdir -p /home/rails/automata
chown deployer /home/rails/automata
顺便说一句,我不确定将您的应用放在 /home/rails
中是否有意义。如果您使用 deployer
来部署您的应用程序(并因此成为应用程序的所有者),将它放在 /home/deployer
中不是更有意义吗?或者在像 /var/www/automata
这样的 "neutral" 位置(正如 Capistrano 默认建议的那样)?