Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
771 views
in Technique[技术] by (71.8m points)

ruby on rails - SSHKit::Runner::ExecuteError

$ bundle exec cap production deploy

(Backtrace restricted to imported tasks) cap aborted!
SSHKit::Runner::ExecuteError:
Exception while executing as Psara@sakura: git exit status: 128 git stdout: Nothing written git stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

SSHKit::Command::Failed:
git exit status: 128
git stdout:Nothing written
git stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Tasks: TOP => git:check (See full trace by running task with --trace) The deploy has failed with an error:
Exception while executing as Psara@sakura:
git exit status: 128 git stdout: Nothing written
git stderr: Permission denied (publickey).

fatal: The remote end hung up unexpectedly

*

deploy.rb

set :application, 'Psara'
set :repo_url, 'git@bitbucket.org:CBLaughter/psara.git'
set :deploy_to, '/home/Psara/Psara'
set :default_run_options, :pty => true

namespace :deploy do

after :restart, :clear_cache do on roles(:web), in: :groups, limit: 3, wait: 10 do # Here we can do anything such as: # within release_path do # execute :rake, 'cache:clear' # end end end

end

set :ssh_options, { forward_agent: true, paranoid: true, keys: "~/.ssh/id_rsa" }

*

production.rb

set :stage, :staging
set :rails_env, :production

role :app, %w{sakura}
role :web, %w{sakura}
role :db, %w{sakura}

server 'sakura', user: 'Psara', roles: %w{web app}, my_property: >:my_value

set :ssh_options, {
keys: %w(~/.ssh/id_rsa),
forward_agent: false, }



I would be glad, if you could teach me what I can do to solve this problem.

I have already added a public key on the bitbucket, but it doesn't work.

*

SSH agent forwarding report


  1. [success] repo_url setting ok

  2. [success] ssh private key file exists

  3. [success] ssh-agent process seems to be running locally

  4. [success] ssh-agent process recognized by ssh-add command

  5. [success] ssh private keys added to ssh-agent

  6. [success] application repository accessible from local machine

  7. [success] all hosts using passwordless login

  8. [success] forward_agent ok for all hosts

  9. [success] ssh agent successfully forwarded to remote hosts

  10. [success] application repository accessible from remote hosts


It seems SSH agent forwarding is set up correctly! You can continue with the deployment process.

It succeeded in all tests, but still makes same error.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Make sure that you have ssh-agent running on your machine, because you're using ssh forwarding, your local keys should be able to access and clone your repo from bitbucket. You can run agent it with:

eval `ssh-agent`
ssh-add ~/.ssh/id_rsa

More info about ssh-forwarding you can find here.

Other thing you should check manually is that you can ssh to your server (your public key should be added to ~/.ssh/authorized_keys on server), and of course that you can clone your repo locally (that probably you're able to do).

Update:

Now i have realised that you turn forwarding for production, in that case you should make sure that key-pair that's on your server (you must have it, because forwarding is turned off), are able to clone repo from bitbucket, you can try cloning on server by hand too.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...