我正在使用两个相同的流浪者盒子,用于测试capistrano部署过程。我可以成功地将应用程序从dev
盒部署到prod
箱。但是,我无法摆脱密码确认。
据我从输出中看到,当部署过程尝试运行mkdir -p /capistrano/tmp
时,就会发生确认,如下所示。
$ bundle exec cap production deploy --trace
** Invoke production (first_time)
** Execute production
** Invoke load:defaults (first_time)
** Execute load:defaults
** Invoke deploy (first_time)
** Execute deploy
** Invoke deploy:starting (first_time)
** Execute deploy:starting
** Invoke deploy:check (first_time)
** Invoke git:check (first_time)
** Invoke git:wrapper (first_time)
** Execute git:wrapper
00:00 git:wrapper
01 mkdir -p /capistrano/tmp
vagrant@192.168.99.50's password:
服务器上prod
当前权限如下(我已经按照描述手动授予了 777:/tmp/git-ssh.sh:权限被拒绝(:
vagrant@prod:~$ ls -l /
drwxrwxrwx 3 vagrant vagrant 4096 Apr 7 16:30 capistrano
vagrant@prod:~$ ls -l /capistrano/
drwxrwxrwx 2 vagrant vagrant 4096 Apr 7 16:33 tmp
然后,当我输入密码时,它会在路径下创建git-ssh-football-production-vagrant.sh
/capistrano/tmp/
。
vagrant@prod:~$ ls -l /capistrano/tmp/
-rwx------ 1 vagrant vagrant 93 Apr 7 16:33 git-ssh-football-production-vagrant.sh
我已经为流浪者用户删除/创建/使用了具有 777 权限的不同文件夹,并尝试了www-data
但无法摆脱密码确认。
部署.rb
...
set :tmp_dir, "/capistrano/tmp"
set :user, "vagrant"
...
生产.rb
role :app, %w{vagrant@192.168.99.50}
server '192.168.99.50', user: 'vagrant', roles: %w{app}
找到了解决方案。我所要做的就是使用以下命令将dev
服务器的公钥添加到服务器的authorized_keys
prod
。
$ cat ~/.ssh/id_rsa.pub | ssh vagrant@192.168.99.40 'cat >> /home/vagrant/.ssh/authorized_keys'