Ssh
如何啟動兩個程序piggie-backed?那麼當第二個完成時,第一個完成?
我正在向跳轉主機後面的伺服器執行帶有 ssh 命令的腳本。每次我想在安全網路中的伺服器上執行命令時,我都需要 ssh 進入跳轉主機(堡壘)伺服器並執行
nc
,然後使用我想通過 netcat 通道執行的實際命令 ssh 進入。然後我需要停止原來的nc
.
nc
我想要一個“智能 & 符號”,它可以讓我同時執行兩個程序,然後在我的小豬支持的程序完成後關閉ssh 程序。這是我目前正在做的事情。
ssh -g -L 23:localhost:22 -f -N user@jumphost & ssh user2@localhost -P 23 "ssh user@destination server \"ls -al\"" kill -0 $!
問題在於它不是原子的。如果腳本中有錯誤,那麼它不會完成,我不會
nc
在最後終止原始程序。我的問題是:如何啟動兩個捎帶的程序?那麼當第二個完成時,第一個完成?
這不是在回答你的問題,但我猜這個關於SU的答案正在解決你的問題:
ProxyCommand
在你的使用~/.ssh/config
應該為你做一切:Host server HostName server.tld User {server user} Host proxy ProxyCommand ssh server -W %h:%p User {proxy user}
然後,您只需使用即可訪問您的伺服器
ssh server
如果我正確解釋你的命令,它會不會和這個一樣?
ssh -t user@jumphost ssh user@destination ...
您
-L
似乎所做的只是將埠轉發到 jumphost 的 SSH 伺服器 - 但您已經連接到該埠,那麼為什麼要額外的隧道呢?在這種情況下,jumphost 也將是第二個連接的 SSH 客戶端。如果您不能相信跳轉主機是客戶端(即,如果您希望跳轉主機只看到加密數據),那麼您必須
-L 23:destination:22
代替localhost
,不是嗎?