ID가 proxycommand
홉 을 사용하여 원래 컴퓨터에서 대상으로 직접 연결되어 있음을 올바르게 이해했습니다 . 그리고 여기에 세 가지 해킹이 있습니다 (세 번째는 사용 시나리오에 대한 의견 다음에 추가되었습니다). 먼저) 원격 포트 포워딩을 사용하여-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
셋째, ssh remote forward를 사용하여 호스트 또는 호스트 유형을 식별하십시오.
# 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