作为第一步,我已经使用Ubuntu16.04配置了AWS EC2实例,并配置了Capistrano以便从本地部署到这个AWS EC2实例。
现在,我正在尝试通过Jenkins和Capistrano将rails应用程序从GitHub自动部署到这个Ubuntu服务器(AWS EC2)。注意:我是第一次创建自动部署。
我的rails应用程序(production)和Jenkins在同一个Amazon EC2实例上。当Jenkins任务启动时,它将repo克隆到jenkins工作区,安装gem,然后执行: cap production deploy
但是现在我不能检查Capistrano是否被正确地配置为部署到同一服务器的另一个文件夹,因为当cap production deploy执行时,我得到这个错误:
Net::SSH::AuthenticationFailed: Authentication failed for user jenkins@
我尝试为用户jenkins创建ssh-key,并通过以下命令将其添加到ubuntu用户(默认非根sudo用户):ssh-keygen ssh-copy-id ubuntu@127.0.0.1 and always get permission denied。
有人有什么建议吗?预先感谢capistrano版本3.11
发布于 2019-12-14 02:17:44
您可以在jenkin用户的authorized_keys文件中添加ubuntu用户的public-key。你可以在/home/ubuntu/.ssh/authorized_keys上找到它。
但是,在我看来,您应该将jenkins运行器迁移到单独的服务器。
您可以创建一个私有网络组,将servers、production和jenkins runner都放在同一个私有网络中,并将ssh端口暴露在同一个私有网络中,使外部人员无法访问。
然后,将jenkins服务器的公钥添加到生产服务器,如上所述。
https://stackoverflow.com/questions/59325713
复制相似问题