제가 제어할 수 없는 방식으로 LocalClient
컴퓨터에 연결 하려고 합니다. 나는 모든 권한을 갖고 있으며 (관리자 권한)RemoteHost
JumpHost
client
RemoteHost
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:
RemoteHost
및LocalClient
: 쿠분투 18.04 LTS - SSH 버전(ssh -v를 통해 도달):
RemoteHost
및LocalClient
:OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
- SSH 버전: (
JumpHost
ssh -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로 전달 해야 합니다.LocalClient
localhost:8888
답변1
ProxyCommand ssh -W %h:%p JumpHost
ssh stdio와 %h:%p 사이의 JumpHost(귀하의 경우 RemoteHost)에 전달을 설정합니다.
AllowTcpForwarding yes
이는 구성이 다음으로 설정되어야 함 을 의미합니다 .점프 호스트sshd_config
JumpHost만이 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
또한보십시오:https://www.cyberciti.biz/faq/linux-unix-ssh-proxycommand-passing-through-one-host-gateway-server/