Mac-Osx
隧道 SSH 時向主機添加臨時條目
在我們公司的防火牆之外,我使用腳本通過 SSH 建立隧道,並將我們的內部 wiki 暴露給我的 OSX 機器。建立隧道時,是否有命令臨時告訴 OSX 解析到我的本地埠?
我希望使用的順序是:
- 打開隧道
ssh -f external-proxy.example -L 8001:internal-wiki.example:8000 -N
- $$ DO SOMETHING HERE $$
- 在我的瀏覽器中輸入 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
解釋:
- 發出時在 Control-C 上執行清理的函式
- 陷阱 Control-C 並關閉
- 睡覺,告訴 osx 打開你的網站,讓開(和號)
- 將條目添加到
/etc/hosts
- 創建隧道
/etc/hosts
當您按 ctrl-c 時,函式會啟動並使用瞬態條目進行清理