Ssh

如何啟動兩個程序piggie-backed?那麼當第二個完成時,第一個完成?

  • August 7, 2015

我正在向跳轉主機後面的伺服器執行帶有 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,不是嗎?

引用自:https://unix.stackexchange.com/questions/220533