Ruby on rails 在capistrano 3.1中获取部署错误
我的deploy.rb文件是Ruby on rails 在capistrano 3.1中获取部署错误,ruby-on-rails,ruby,deployment,capistrano3,Ruby On Rails,Ruby,Deployment,Capistrano3,我的deploy.rb文件是 lock '3.2.1' set :application, 'my_app' set :repo_url, 'path_to_git_repo.git' set :deploy_user, 'root' set :deploy_to, '/var/www' set :branch, 'master-final_code' set :scm, :git set :deploy_via, :copy
lock '3.2.1'
set :application, 'my_app'
set :repo_url, 'path_to_git_repo.git'
set :deploy_user, 'root'
set :deploy_to, '/var/www'
set :branch, 'master-final_code'
set :scm, :git
set :deploy_via, :copy
set :format, :pretty
set :stages, ["staging"]
set :log_level, :debug
set :pty, true
我的staging.rb是
set :stage, :staging
role :app, %w{root@my_ip_add}
%w{[root]}
server 'my_ip_add', user: 'root', roles: %w{app}
set :ssh_options, {
forward_agent: false,
auth_methods: %w(password),
password: 'my_pass',
user: 'root'
}
获取错误:
Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
在这种情况下我该怎么办?我应该编辑配置吗。是deploy.rb还是staging.rb?或者ssh密钥有问题吗?这是一个ssh/git问题。错误消息分为两部分:
Permission denied (publickey,keyboard-interactive)
这意味着“我试图连接到git repo,但我做不到。”它没有这么明确地说,但它的格式是来自SSH的错误。括号中的部分告诉您它是如何尝试进行身份验证的:首先使用,然后通过键盘提示
fatal: Could not read from remote repository
因为git无法连接到您的git repo,所以它无法检索您的代码。因此,部署失败
关于您的代码,有一件令人担忧的事情是您正试图以root用户的身份进行部署。这是一个可怕的坏主意;您不仅将根凭据存储在配置文件中,而且如果您(或Capistrano作者)在部署任务或配置中有错误,可能会破坏系统。创建一个具有部署目录权限的
deploy
用户要好得多。这样,如果出现问题,或者有人获得了对deploy
帐户的访问权,他们就没有对服务器的完全访问权。您还应该知道,许多系统通常是默认的