답변:
확실한; SSH 포트 전달 / 터널링 만 사용하십시오. 다음 명령을 사용하여 "proxy"시스템에 대한 ssh 연결을 시작하십시오.
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST: SSH 액세스 권한이있는 머신$REMOTEHOST: $ PROXYHOST가 연결할 수 있지만 연결할 수없는 머신. $PROXYHOST컴퓨터를 참조하는 데 사용할 수 있는 호스트 이름 또는 IP를 사용하십시오.$SSHPORT: sshd가 원격 호스트에서 수신 대기중인 포트; 대부분 22$LOCALPORT: 로컬 아웃 바운드 포트 SSH가 로컬 컴퓨터에서 포트 22의 포트로 전달됩니다. $REMOTEHOST터널이 계속 작동하도록 연결을 유지하십시오. -N이 연결이 원격 쉘을 가져 오지 않고 나중에 실수로 닫지 않도록 명령에 추가 할 수도 있습니다 .
터널이 설정되면 다음을 수행하십시오.
ssh -p $LOCALPORT localhost
$REMOTEHOSTSSH 포트로 전달 된 포트에서 로컬 시스템에 대한 SSH 연결을 시도합니다 .
클라이언트에서 구성을 업데이트하려는 경우 게이트웨이 상자를 프록시 로 사용하도록 클라이언트를 설정할 수 있습니다 . 릴레이 박스에 netcat이 설치되어 있어야하며 최상의 결과를 얻으려면 키 기반 인증 설정이 필요합니다.
다른 호스트를 통해 연결하기 위해 .ssh / config에서 사용하는 내용은 다음과 같습니다.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"
위와 같이 클라이언트 시스템에서 ssh internal-ssh-host-proxy 명령을 간단히 실행할 수 있습니다 .
프록시 SSH 호스트에 OpenSSH 클라이언트 5.4 이상이 있으면 netcat이 필요하지 않고 대신 내장 netcat 모드를 사용할 수 있습니다.
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
OpenSSH를 사용하여 자동으로 연결을 전달할 수 있습니다. 당신의에서 ~/.ssh/authorized_keys파일, 당신은 두 번째 시스템에 SSH가 될 수있는 실행 명령을 지정할 수 있습니다.
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
결국 보게 될 것은 두 가지 프롬프트입니다 Password:. 하나는 릴레이 서버와 다른 하나는 대상 서버입니다. 인증서를 사용하여이 동작을 항상 제거 할 수 있습니다.