Idは、あなたが起点マシンから宛先へproxycommand
ホップで直接接続していることを正しく理解しました。そしてここにあなたのための3つのハックがあります(使用シナリオに関するコメントの後に追加された3番目)。まず、リモートポート転送を使用して、元のマシンに戻ることができます-R remotemachineport:dstonlocalnet:dstportonlocalnet
ssh -R 2222:localhost:22 user@target
# on "target" you can now do this to get back to origin host
ssh user2@localhost -p 2222
第二に)AcceptEnv LC_*
標的に対する虐待。良くありませんが、AcceptUserEnviconmentが使用できない場合でも、LOCALE変数を許可することはよくあります。だから今できること:
export LC_SOURCEHOST=my.ip.addr.or:something
ssh user@target
# on tathet:
echo $LC_SOURCEHOST
3番目に、sshリモート転送を使用して、ホストまたはホストタイプを識別します。
# Here is an example what you can use on target machine.
# This will modify your PS1 variable (prompt) based on source host (port forwarding)
# Add this to .bash_profile
function checkHost {
RET=""
## loop over test port numbers 17891-17895 in my example
for x in $(seq 1 5); do
# if netstat is not available test port some other way like with nc or something
## && RET= will set RET = 1-5
/bin/netstat -lnt|/bin/grep -q 127.0.0.1:1789$x && RET=$x;
done
# return RET
# please note that if you have multiple open connections with different port numbers
# this method cannot not distinguish between them
echo $RET
}
# get 1-5 number from function above
VAL=$(checkHost)
# do something like set PS1 var or map vim file or something
export PS1='\[\033k\033\\\]\u@\h: \w\$ '$VAL
次に、ポート転送で接続します。
### this will still enable ssh forwarding back. Change 22 to something else like
### 24 to disable it (if nothing is listening on your source machines 24 port)
ssh -R 17891:localhost:22 user@target