Ubuntu 来自rc.local ssh的Capistrano身份验证失败

Ubuntu 来自rc.local ssh的Capistrano身份验证失败,ubuntu,ssh,amazon-ec2,capistrano,capistrano3,Ubuntu,Ssh,Amazon Ec2,Capistrano,Capistrano3,我将简单的Capistrano3部署脚本设置为从rc.local为aws autoscaler生成的每个新节点运行 当我以root用户身份手动执行脚本时,一切运行正常,但一旦我重新启动并查看rc.local执行日志,我会得到以下结果: cap aborted! SSHKit::Runner::ExecuteError: Exception while executing on host 127.0.0.1: Authentication failed for user ubuntu@127.0.

我将简单的Capistrano3部署脚本设置为从rc.local为aws autoscaler生成的每个新节点运行

当我以root用户身份手动执行脚本时,一切运行正常,但一旦我重新启动并查看rc.local执行日志,我会得到以下结果:

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing on host 127.0.0.1: Authentication failed for user ubuntu@127.0.0.1
/var/lib/gems/1.9.1/gems/net-ssh-2.9.1/lib/net/ssh.rb:219:in `start'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/connection_pool.rb:50:in `call'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/connection_pool.rb:50:in `create_new_entry'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/connection_pool.rb:22:in `checkout'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:179:in `with_ssh'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:131:in `block in _execute'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:128:in `tap'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:128:in `_execute'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:66:in `execute'
/var/lib/gems/1.9.1/gems/capistrano-3.2.1/lib/capistrano/tasks/git.rake:17:in `block (3 levels) in <top (required)>'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:54:in `instance_exec'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:54:in `run'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/runners/parallel.rb:13:in `block (2 levels) in execute'
Net::SSH::AuthenticationFailed: Authentication failed for user ubuntu@127.0.0.1
/var/lib/gems/1.9.1/gems/net-ssh-2.9.1/lib/net/ssh.rb:219:in `start'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/connection_pool.rb:50:in `call'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/connection_pool.rb:50:in `create_new_entry'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/connection_pool.rb:22:in `checkout'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:179:in `with_ssh'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:131:in `block in _execute'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:128:in `tap'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:128:in `_execute'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:66:in `execute'
/var/lib/gems/1.9.1/gems/capistrano-3.2.1/lib/capistrano/tasks/git.rake:17:in `block (3 levels) in <top (required)>'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:54:in `instance_exec'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/backends/netssh.rb:54:in `run'
/var/lib/gems/1.9.1/gems/sshkit-1.5.1/lib/sshkit/runners/parallel.rb:13:in `block (2 levels) in execute'
Tasks: TOP => git:check => git:wrapper
(See full trace by running task with --trace)
The deploy has failed with an error: #<SSHKit::Runner::ExecuteError: Exception while executing on host 127.0.0.1: Authentication failed for user ubuntu@127.0.0.1>
作为根用户

ssh ubuntu@127.0.0.1 
一切顺利

rc.local看起来像这样:

#!/bin/bash -ex
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exec > >(tee /var/log/rc.local.log|logger -t rc.local -s 2>/dev/console) 2>&1

/home/ubuntu/deployment/local-deploy.sh

exit 0
如前所述,以root用户身份手动运行/home/ubuntu/deployment/local-deploy.sh工作正常,但当它在引导时(从rc.local)运行时,我会收到上面的身份验证错误


感谢您的帮助。

我终于解决了这个问题,向ubuntu用户提起诉讼,然后执行命令:

su ubuntu -c '...'
su ubuntu -c '...'