Mac-Osx

隧道 SSH 時向主機添加臨時條目

  • August 6, 2020

在我們公司的防火牆之外,我使用腳本通過 SSH 建立隧道,並將我們的內部 wiki 暴露給我的 OSX 機器。建立隧道時,是否有命令臨時告訴 OSX 解析到我的本地埠?

我希望使用的順序是:

  1. 打開隧道 ssh -f external-proxy.example -L 8001:internal-wiki.example:8000 -N
  2. $$ DO SOMETHING HERE $$
  3. 在我的瀏覽器中輸入 URL internal-wiki.example:8000會導致它透明地查看localhost:8001

其他詳情:

  • 我可以編輯**/etc/hosts**但這將是一個持久的變化。我只想在外面使用這個
  • 我們沒有使用 SSL 或證書。

我有一個解決方案,將您的 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

解釋:

  1. 發出時在 Control-C 上執行清理的函式
  2. 陷阱 Control-C 並關閉
  3. 睡覺,告訴 osx 打開你的網站,讓開(和號)
  4. 將條目添加到/etc/hosts
  5. 創建隧道
  6. /etc/hosts 當您按 ctrl-c 時,函式會啟動並使用瞬態條目進行清理

引用自:https://serverfault.com/questions/874213