Ruby on rails 使用Capistrano deploy从linode连接到github拒绝对公钥的权限
这是我第一次使用linode并将Rails应用程序上传到VPS,所以我可能跳过了一些显而易见的事情 我学习了两个教程 和 我现在正打算在Linode Ubuntu 13.10上部署我的rails应用程序 当我执行命令bundle exec cap deploy:update时 我得到的错误是,由于公钥,Linode无法连接到githubRuby 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
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更相关,但我可能又错了。