• 使用Capistrano向EC2部署Django代码关于SSH相关的配置


    使用Capistrano向EC2部署Django代码的文章中,主要给出了Capistrano的配置文件,这里具体说一下SSH的相关配置。

    Capistrano里面和SSH相关的有几个设置的地方:

    set :user, "ec2-user" #连接EC2的用户名
    set :use_sudo, false  #连接EC2之后进行deploy:setup的时候,不允许使用sudo
    default_run_options[:pty] = true
    
    ssh_options[:forward_agent] = true #采用SSH agent forwarding技术
    ssh_options[:port] = 22
    ssh_options[:keys] = [File.join(ENV["HOME"], ".ec2", "aws_xxx"), File.join(ENV["HOME"], ".ssh", "deploy_xxx")] #指定连接EC2需要用的keyfile

    使用SSH的两个地方:

    • Local连接EC2:基于key pair认证
    • EC2连接github

    1:连接EC2的时候是基于key pair的认证。在命令行下一般这么使用

    ssh -i sample.pem ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com

    这里需要通过[ -i ]明确指定你的私钥位置,你可以使用AWS帮你生成的*.pem,也可以是自己通过ssh-keygen产生的私钥。这个可以通过ssh_options[:keys]进行配置。如果不配置的话,默认会询问你的密码。其实你也可以把该私钥的放到ssh agent里面就可以不用通过配置文件的ssh_options来明确指定了。

    ssh-add /the/full/path/to/private-key

    2:EC2连接github的时候,可以有三种方法,我们这次采用SSH agent forwarding方法。

     具体参照:https://help.github.com/articles/using-ssh-agent-forwarding

    # .ssh/config
    Host *.compute.amazonaws.com
      ForwardAgent yes
    
    # deploy/development.rb
    ssh_options[:forward_agent] = true
    ssh_options[:port] = 22
    ssh_options[:keys] = [File.join(ENV["HOME"], ".ec2", "aws_op")]

    注意:EC2连接github使用的SSH Key必须要事先通过ssh-add告诉ssh agent(具体内容可以通过ssh-add -l来进行确认)否则连不通。而且具体使用的key也不必通过ssh_options[:keys]进行配置。如果你本地有多个可以访问指定repo的多个github账号,且他们的SSH key都加入到ssh agent里的时候,怎么具体指定使用哪个账号进行操作,暂时还无法知晓,即使指定了ssh_options[:keys]也好像不凑效。

  • 相关阅读:
    在web项目下注册MySQL数据库驱动失败
    Servlet 调用过程
    请求时参数到后台解码时会出现乱码问题
    Request 部分功能
    dom4j增删改查
    微信消息处理JAXP-sax解析
    微信消息处理JAXP-dom解析
    inputstream与其他格式的转换
    微信消息处理
    将Gridview导出到Excel
  • 原文地址:https://www.cnblogs.com/foxracle/p/2604771.html
Copyright © 2020-2023  润新知