隧道 SSH 时向主机添加临时条目

puf*_*ish 2 hosts mac-osx ssh-tunnel

在我们公司防火墙之外时,我使用脚本通过 SSH 建立隧道并将我们的内部 wiki 暴露给我的 OSX 机器。是否有命令可以在设置隧道时临时告诉 OSX 解析到我的本地端口?

我希望使用的顺序是:

  1. 打开隧道 ssh -f external-proxy.example -L 8001:internal-wiki.example:8000 -N
  2. [在这里做点什么]

  3. 在我的浏览器中输入 URL internal-wiki.example:8000会导致它透明地查看localhost:8001

其他详情:

  • 我可以编辑/etc/hosts但这将是一个持续的变化。我只想在外面使用它
  • 我们没有使用 SSL 或证书。

Mar*_*cel 7

我为您提供了一个解决方案,将您的 ssh 命令包装到一个 bash 脚本中:

#!/bin/bash

function control_c {
    echo -en "\n## Caught SIGINT; Clean up /etc/hosts and Exit \n"
    sed -i '' "/internal-wiki/d" /etc/hosts
    exit $?
}

trap control_c SIGINT
trap control_c SIGTERM

(sleep 5; open http://internal-wiki.example:8001 &)&
echo '127.0.0.1 internal-wiki.example' >> /etc/hosts
ssh -L8001:internal-wiki.example:8000 -f external-proxy.example -N
Run Code Online (Sandbox Code Playgroud)

解释:

  1. 发出时在 Control-C 上执行清理的函数
  2. 陷阱 Control-C 和关机
  3. 睡觉,告诉 osx 打开你的网站,让开(&符号)
  4. 将条目添加到 /etc/hosts
  5. 创建隧道
  6. 当您按 ctrl-c 时,这些函数会启动并/etc/hosts 使用瞬态条目进行清理