【问题标题】:Setting up an SSH tunnel on Heroku: installing SSH key pairs?在 Heroku 上设置 SSH 隧道:安装 SSH 密钥对?
【发布时间】:2015-02-03 08:16:25
【问题描述】:

我的 RoR 应用程序需要访问远程数据库(FWIW 它是托管在 rds.amazonaws.com 上的 mysql)。访问它的唯一方法是通过 SSH 隧道。

我已经在本地机器上测试了访问权限。我正在通过以下方式设置隧道:

ssh -f -N -L 3307:longname.rds.amazonaws.com:3306 remote_user@remote_host.com 

(但请参阅https://stackoverflow.com/a/27305457/558639 以了解我实际上是如何做到的)。无论如何,我需要在 Heroku 上安装一个 SSH 密钥对(私有和公共部分)才能正常工作。

不过,我在这里并不熟悉。我可以编写一个在安装密钥的 Heroku 会话开始时启动的脚本。什么是正确的方法来完成这个而不是不必要地暴露私钥?

【问题讨论】:

    标签: ruby-on-rails heroku ssh ssh-tunnel


    【解决方案1】:

    这是我想出的。 (详细说明请参见SSH tunneling from Heroku。)

    1. 设置一堆环境变量,包括公钥和私钥,使用heroku config:set NAME1=value1 NAME2=value2 etc...
    2. 使用以下内容创建.profile.d/web-setup.sh。请注意,根据https://devcenter.heroku.com/articles/profiled.profile.d 目录中的任何文件都将在首次设置测功机时运行。

    注意:这样,私有 SSH 密钥在 heroku 环境中显示为配置变量。由于其他敏感信息都保存在那里,我认为这是一种相对安全的方法。

    .profile.d/web-setup.sh 文件包含:

    # file=.profile.d/web-setup.sh
    
    # create keypair files on this dyno
    echo $0: creating public and private key files
    mkdir -p ${HOME}/.ssh
    echo "${PUBLIC_KEY}" > ${HOME}/.ssh/heroku_id_rsa.pub
    chmod 644 ${HOME}/.ssh/heroku_id_rsa.pub
    # note the use of double quotes to preserve newlines!
    echo "${PRIVATE_KEY}" > ${HOME}/.ssh/heroku_id_rsa
    chmod 600 ${HOME}/.ssh/heroku_id_rsa
    
    # You may need to preload known-hosts here.  See
    # https://stackoverflow.com/questions/21575582/ssh-tunneling-from-heroku/27361295#27361295
    # on how to do that.
    
    # open a tunnel if not already running
    SSH_CMD="ssh -f -i ${HOME}/.ssh/heroku_id_rsa -N -L ${LOCAL_PORT}:${REMOTE_MYSQL_HOST}:${MYSQL_PORT} ${REMOTE_USER}@${REMOTE_SITE}"
    PID=`pgrep -f "${SSH_CMD}"`
    
    if [ $PID ] ; then
        echo $0: tunnel already running on ${PID}
    else
        echo $0 launching tunnel
        $SSH_CMD
    fi
    

    【讨论】:

      猜你喜欢
      • 2010-09-29
      • 2014-11-15
      • 2014-03-01
      • 2020-03-01
      • 1970-01-01
      • 2017-08-04
      • 2018-02-15
      • 2020-07-31
      • 2016-08-17
      相关资源
      最近更新 更多