我目前正在編寫一個創建 SSH 隧道的 Bash 腳本。完成此操作後,我希望腳本打開一個新的本地(!)互動式 shell,以便我可以在打開 SSH 隧道的情況下在我的系統上工作。
一旦我輸入,exit
本地 shell 應該關閉,並且原始腳本繼續運行。
我目前的方法基本上是這樣的:
#!/usr/bin/env bash
set -e
ssh -N user@ip -L xxx:xxx &
SSH_CONNECTION=${!}
trap "kill ${SSH_CONNECTION}" ERR
sleep 3
bash -i
kill ${SSH_CONNECTION}
到目前為止,一切正常 - 除了運行本地 shell 之外。我實際上得到了一個 shell,我甚至可以在其中輸入內容,但是當我點擊 時什麼都沒有發生<Return>
。
知道我做錯了什麼嗎?
答案1
您需要使用-f
,以便連線建立後將進入背景。那你將不需要&
:
ssh -Nf -L xxx:xxx user@ip
並且處理應該進入你的bash
.