Ruby on rails 使用Capistrano deploy从linode连接到github拒绝对公钥的权限

Ruby on rails 使用Capistrano deploy从linode连接到github拒绝对公钥的权限,ruby-on-rails,ruby,git,github,ssh,Ruby On Rails,Ruby,Git,Github,Ssh,这是我第一次使用linode并将Rails应用程序上传到VPS,所以我可能跳过了一些显而易见的事情 我学习了两个教程 和 我现在正打算在Linode Ubuntu 13.10上部署我的rails应用程序 当我执行命令bundle exec cap deploy:update时 我得到的错误是,由于公钥,Linode无法连接到github user:my-app User$ bundle exec cap deploy:update * 2014-02-12 17:19:46 executi

这是我第一次使用linode并将Rails应用程序上传到VPS,所以我可能跳过了一些显而易见的事情

我学习了两个教程 和

我现在正打算在Linode Ubuntu 13.10上部署我的rails应用程序

当我执行命令bundle exec cap deploy:update时

我得到的错误是,由于公钥,Linode无法连接到github

user:my-app User$ bundle exec cap deploy:update
  * 2014-02-12 17:19:46 executing `deploy:update'
 ** transaction: start
  * 2014-02-12 17:19:46 executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote git@github.com:user/my-app.git master"
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/user/apps/my-app/releases/20140212091953; true"
    servers: ["XXX.XXX.XX.XX"]
    [XXX.XXX.XX.XX] executing command
    command finished in 4607ms
Command git ls-remote git@github.com:user/my-app.git master returned status code pid 1529 exit 128
在我的本地计算机上,我可以在Github上提交和推送我的应用程序,而且我的本地计算机上有RSA密钥。每次推我的应用程序时,它只要求我用用户名和密码登录

在shell的linode上,我可以使用ssh-vT连接到githubgit@github.com. 我在linode服务器上有RSA密钥,并且我使用ssh add添加了ssh代理

我的deploy.rb

set :application, "my-app"
set :user, "user"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
set :keep_releases, 3
default_run_options[:pty] = true
set :scm, :git
set :repository, "git@github.com:user/#{application}.git"
set :ssh_options, { :forward_agent => true }
# ssh_options[:forward_agent] = true
set :branch, "master"
我有点不知所措


编辑:我有一个私有存储库,所以我找到了这个github连接的解决方案。实际上,我在捆绑包安装失败的部署中遇到了另一个问题。无论如何,这里是我学到的,我希望它能帮助别人

您需要知道的是:

当您希望推动公共或私人Github时,使用Capistrano 在您的VPS服务器上,您需要确保 服务器和您的计算机通过Github具有SSH访问权限。 即使您可以git推送原始主机,也不意味着您有SSH 使用Github访问。以下是您的疑难解答: A确保您可以从计算机进行SSH访问

确保您的计算机上安装了Git

确保使用Linux的本地计算机上有SSH密钥 还是苹果

cd~/.ssh然后 ls-a

并查找文件id_rsa和id_rsa.pub

如果您没有这些rsa文件,请遵循本教程

复制您的SSH密钥

pbcopy<~/.ssh/id\u rsa.pub 将id_rsa.pub文件的内容复制到剪贴板

打开浏览器登录并转到 您的\u用户名->编辑配置文件->设置->ssh密钥 . 单击“添加密钥”按钮,添加标识您的编译器的名称,并粘贴以前复制的密钥代码

确保已启用SSH代理。终端类型

ssh add如果希望,请输入密码短语

测试是否可以使用Github进行SSH

sshgit@github.com

第一次它可能会要求您接受连接。 您应该得到以下响应

PTY allocation request failed on channel 0
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
您还可以通过运行

ssh -vT git@github.com
# make sure that this line is not -1 (it means it couldn't find the file)
=> debug1: identity file /Users/YOUR_USERNAME/.ssh/id_rsa type 1
现在,您不应该拒绝使用公钥

B确保您可以从服务器进行SSH访问

运行sshroot@your_server_ip_address如果您没有在服务器或ssh上设置用户username@your_server_ip_address. 然后,您将在服务器外壳中,并希望对您的计算机重复相同的过程。 注意:服务器SSH密钥与您的计算机不同。这意味着在Github上需要添加2个SSH密钥,一个用于计算机,一个用于服务器。这就是为什么您需要在两台机器上重复此过程。同样为了简单起见,不要试图在每台机器上拥有多个SSH密钥

注意2:在生成SSH密钥后,在服务器中运行cat~/.SSH/id_rsa.pub命令进行复制


一旦您的计算机和服务器都在Github上被接受,您就可以使用capistrano和Github存储库更新rails应用程序。耶

我刚从Linux迁移到MacOSX。因此,我将整个.ssh文件夹从linux导入mac。在从linux迁移到linux的过程中,它起了作用,但要在Mac上运行,我还必须运行:

ssh添加


这就是整件事;有关更多信息,请参阅。

您是否尝试过此方法:?你好,Uri,感谢您的回复。我很确定这不是一个密码问题,因为在这个测试事件中,没有任何密码。OK。在deploy.rb中,它显示set:repository,git@github.com:user/{application}.git。您已将其重命名为此处的用户,对吗?在您的实际deploy.rb中,它是真实的存储库位置……是的,我在stackoverflow上将其重命名,真实的用户名和应用程序名称正确地写入cap文件中。我认为这个问题与github比cap更相关,但我可能又错了。