Proxy

ssh_config 的 ProxyCommand 可以在連接到遠端機器之前執行本地命令嗎?

  • July 31, 2012

在我可以連接到特定的遠端機器之前,我必須執行某個本地命令。所以ssh me@remote.machine我必須這樣做

local_command
ssh me@remote.machine

我想自動化這個,所以我只需要做ssh remote.machine.

我知道我可以通過創建自己的ssh呼叫腳本在 shell 級別實現這一點/usr/bin/ssh,但是我可以使用ProxyCommand選項來實現ssh_config嗎?

據我了解,我需要類似的東西

Host remote.machine
   ProxyCommand local_command; ssh me@remote.machine

在我的~/.ssh/config文件中,但當然不完全是這個,因為它是圓形的!

如果使用ProxyCommand,您必須使用類似的東西/usr/bin/nc來連接伺服器。

為了在連接之前呼叫您的命令,您需要使用sh -c "command list"將兩個命令合併為一個。

Host remote.machine
   ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"

更多的:

如果你local_command的太複雜,你可以使用腳本:

cat my_connect.sh
#!/bin/bash

local_command
/usr/bin/nc "$1" "$2"

ssh 配置變為:

Host remote.machine
       ProxyCommand /path_to_my_connect.sh %h %p

最後,您可以將自己的代理添加到/usr/bin/nc

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