ssh -t를 사용하면 점프 호스트를 통해 연결할 수 있지만 ssh -W는 작동하지 않습니다.

ssh -t를 사용하면 점프 호스트를 통해 연결할 수 있지만 ssh -W는 작동하지 않습니다.

제가 제어할 수 없는 방식으로 LocalClient컴퓨터에 연결 하려고 합니다. 나는 모든 권한을 갖고 있으며 (관리자 권한)RemoteHostJumpHostclientRemoteHost

SSH를 통해 완벽하게 연결할 수 있습니다 RemoteHost.LocalClient

ssh -tX relayUserName@JumpHost remoteUser@RemoteHostIP

내 ~/.ssh/config 파일의 구성은 다음과 같습니다.

Host RemoteHost
    ProxyCommand ssh -W %h:%p JumpHost

이제 터널링을 시도하면 RemoteHost다음 오류가 발생합니다.

channel 0: open failed: administratively prohibited: open failed
stdio forwarding failed

다음을 사용하여 ssh -v더 많은 정보를 얻을 수 있습니다.

Authenticated to <JumpHost> ([JumpHostIP]:22).
debug1: channel_connect_stdio_fwd RemoteHostIP:22
debug1: channel 0: new [stdio-forward]
debug1: getpeername failed: Bad file descriptor
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
channel 0: open failed: administratively prohibited: open failed
stdio forwarding failed
ssh_exchange_identification: Connection closed by remote host

기반으로이 답변sshd_config/etc/ssh/, in 값을 확인 RemoteHost하고 (수동으로) 설정했습니다.

AllowTcpForwarding yes

문제가 계속 발생하고 다른 방법을 시도해 볼 수 없습니다.

세부 사항:

  • OS: RemoteHostLocalClient: 쿠분투 18.04 LTS
  • SSH 버전(ssh -v를 통해 도달): RemoteHostLocalClient:OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
  • SSH 버전: ( JumpHostssh -v debug1을 통해 도달):
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000

참고로, 브라우저를 통해 원격으로 내 실험에 액세스하려면 RemoteHost실행 중인 Jupyter Lab 인스턴스 로 터널링 --no-browser --port=8889하고 이를 포트 8888로 전달 해야 합니다.LocalClientlocalhost:8888

답변1

ProxyCommand ssh -W %h:%p JumpHostssh stdio와 %h:%p 사이의 JumpHost(귀하의 경우 RemoteHost)에 전달을 설정합니다.

AllowTcpForwarding yes이는 구성이 다음으로 설정되어야 함 을 의미합니다 .점프 호스트sshd_configJumpHost만이 stdio에서 RemoteHost로의 전달을 수행하기 때문에 .not RemoteHost 입니다 .

JumpHost에서 sshd_config를 변경할 수 없는 경우 다음에서 이를 수행할 수 있습니다 ~/.ssh/config.

Host RemoteHost
    ProxyCommand ssh JumpHost netcat %h %p

이는 ssh -W와 동일한 작업을 수행하지만 기본 명령을 사용하므로 JumpHost의 ssh 서버는 AllowTcpFowarding no를 사용해도 이를 거부하지 않습니다.

JumpHost의 netcat 프로그램을 사용하여 다음과 같이 ProxyCommand의 ssh stdio를 다른 호스트로 리디렉션합니다.

interactive ssh <= stdio => ProxyCommand's ssh <= network => JumpHost's sshd <= stdio => netcat <= network => RemoteHost

SSH 연결 다이어그램

또한보십시오:https://www.cyberciti.biz/faq/linux-unix-ssh-proxycommand-passing-through-one-host-gateway-server/

관련 정보