首先,我已使用Ubuntu 16.04配置了AWS EC2实例,并配置了Capistrano以便从本地部署到此AWS EC2实例。
现在,我正尝试通过Jenkins和Capistrano将来自GitHub的autodeploy rails应用程序制作到此Ubuntu Server(AWS EC2)。注意:我是第一次创建自动部署。
我的Rails应用程序(生产)和Jenkins在同一Amazon EC2实例上。当Jenkins任务启动时,它将仓库复制到jenkins工作区,安装gems,然后执行:cap production deploy
但是现在我无法检查Capistrano是否已正确配置为可以部署到同一服务器的另一个文件夹,因为执行cap production deploy
时出现此错误:
Net::SSH::AuthenticationFailed: Authentication failed for user jenkins@
我尝试通过以下方式为用户jenkins创建ssh-key并将其添加到ubuntu用户(默认的非root用户sudo用户):ssh-keygen
ssh-copy-id [email protected]
并始终获得权限被拒绝的错误。
有人有什么建议吗?先感谢您capistrano版本3.11
您可以在jenkin
用户的public-key
文件中添加authorized_keys
用户的ubuntu
。您可以在/home/ubuntu/.ssh/authorized_keys
上找到它。
但是,我认为您应该将jenkins
运行程序迁移到单独的服务器。
您可以创建一个VPC组,并将服务器,生产服务器和jenkins运行程序都放在该单个VPC中,并在同一VPC中公开ssh
端口,这样外面的任何人都无法访问它。
然后如上所述,将jenkins
服务器的公钥添加到生产服务器。