From hugoxrosa at gmail.com Mon Feb 22 11:38:07 2010 From: hugoxrosa at gmail.com (Hugo) Date: Mon, 22 Feb 2010 13:38:07 -0300 Subject: [Backupgem-users] Net::SSH::AuthenticationFailed in rotation via ssh Message-ID: <5d94b09f1002220838l668737c4x93ca30135adcce53@mail.gmail.com> I've got this error message when doing a backup via SSH. hugo at pesquisa:~$ backup --recipe bkup-hugo.rb tar -cvjf /tmp/bin.tar.bz2 ~/bin tar: Removing leading `/' from member names /home/hugo/bin/ /home/hugo/bin/ie6 scp /tmp/bin.tar.bz2 hugo at 192.168.0.10:backup/ bin.tar.bz2 100% 168 0.2KB/s 00:00 /var/lib/gems/1.8/gems/net-ssh-2.0.20/lib/net/ssh.rb:192:in `start': Net::SSH::AuthenticationFailed from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/ssh_helpers.rb:98:in `connect' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/ssh_helpers.rb:97:in `each' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/ssh_helpers.rb:97:in `connect' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/rotator.rb:52:in `rotate_via_ssh' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:114:in `via_ssh' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:97:in `send' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:97:in `rotate' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:64:in `send' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:64:in `send_and_store' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:57:in `start_process!' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:55:in `each' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/actor.rb:55:in `start_process!' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/cli.rb:109:in `execute_recipes!' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/cli.rb:72:in `execute!' from /var/lib/gems/1.8/gems/backupgem-0.0.11/lib/backup/cli.rb:11:in `execute!' from /usr/local/bin/backup:12 My backup file is: set :backup_path, "backup" #set :tmp_dir, "/tmp" set :action_order, %w{ content compress encrypt deliver rotate cleanup } set :servers, %w{ 192.168.0.10 } set :ssh_user, ENV['USER'] set :identity_key, ENV['HOME'] + "/.ssh/id_rsa" set :port, 22 set :son_promoted_on, :fri set :father_promoted_on, :last_fri_of_the_month set :sons_to_keep, 5 set :fathers_to_keep, 3 set :grandfathers_to_keep, 1 action :content, :is_folder => "~/bin" action :deliver, :method => :scp action :rotate, :method => :via_ssh As you can see, was not possible to authenticate. But, the file /tmp/bin.tar.bz2 was sucessfull copied, the error occur during rotation process. I have tested not doing the rotation, removing rotate from :action_order and everything works ok. I've looked at ssh_helper.rb file and the function Net::SSH.start has wrong syntax in Backup::SshActor.connect, it is: def connect c[:servers].each do |server| # todo, make this actually work @session = Net::SSH.start( server, :port => c[:port], :username => c[:ssh_user], :host_key => "ssh-rsa", :keys => [ c[:identity_key] ], :auth_methods => %w{ publickey } ) end end But, looking at syntax of Net::SSH::start (http://net-ssh.rubyforge.org/ssh/v2/api/index.html) start(host, user, options={}) {|connection| ...} I think it should be something like: def connect c[:servers].each do |server| # todo, make this actually work @session = Net::SSH.start( server, c[:ssh_user], :port => c[:port], :host_key => "ssh-rsa", :keys => [ c[:identity_key] ], :auth_methods => %w{ publickey } ) end From hugoxrosa at gmail.com Mon Feb 22 12:38:54 2010 From: hugoxrosa at gmail.com (Hugo) Date: Mon, 22 Feb 2010 14:38:54 -0300 Subject: [Backupgem-users] Problems with Net::SSH use Message-ID: <5d94b09f1002220938q7e020b98p8fa0135360acaa3e@mail.gmail.com> I would like to describe another mistake I found on code. At file ssh_helper.rb in method Backup::Command.open_channels you are using methods on_success and on_failure but this methods don't exist in Net::SSH::Connection::Channel definition (http://net-ssh.rubyforge.org/ssh/v2/api/classes/Net/SSH/Connection/Channel.html) and method on_request need to get an argument.