
업무를 위해 머신 A를 통해 로컬 머신에서 SSH를 통해 머신 B에 도달해야 합니다. 문제는 머신 A에 X11 전달 기능이 없고 이를 변경할 수 있는 수퍼유저 권한이 없다는 것입니다. 저는 머신 B에 대한 수퍼유저 권한을 갖고 있으며 X11 전달이 켜져 있습니다.
A에서 X11 전달을 활성화하지 않고 B에서 A를 통해 내 로컬 컴퓨터로 X11을 전달할 수 있는 방법이 있습니까?
ssh -t -X user@A ssh -X user@B
실행 을 시도했지만 로그인 ssh -t user@A ssh -X user@B
시 머신 A가 계속 출력됩니다 .X11 forwarding request failed on channel 0
답변1
이것을 ~.ssh/config에 추가하십시오:
Host BviaA
HostName hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
그럼 ssh -X user@BviaA
작동해야 해
Host BviaA
위의 구성 섹션에서 무슨 일이 일어나는지 더 명확하게 유지하는 데 사용했습니다 . Host hostB
완전히 투명하게 작동하도록 할 수도 있습니다 . ssh -X user@hostB
(게이트웨이가 필요하지 않은 것처럼)
또는 구성 변경 없이 테스트하기 위한 단일 라이너로:
ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB
답변2
귀하의 답변에 대해 @rudimeier에게 감사드립니다.
나에게 문제가 있었다체크 안함ssh를 사용할 때 옵션이 있지만 이 변형은(@aDroid가 설명한 내용을 기반으로 함)여기) 나를 위해 일했습니다. 그래서 이것은 본질적으로 동일합니다한 줄짜리 답변최신 버전의 OpenSSH에 대한 @rudimeier:
$ ssh -X -oProxyCommand="ssh [email protected] -W %h:%p" [email protected]
@user4556274답변나에게도 도움이 되었습니다(당신에게도 감사드립니다).
저와 같은 초보자에게 어떻게 작동하는지 명확히 하기 위해 두 단계 모두에 사용자 이름을 추가하겠습니다. (첫 번째 명령을 입력한 후 localhost 포트 2222는 컴퓨터 B의 포트 22인 것처럼 작동합니다. 따라서 두 번째 명령에서는 컴퓨터 B의 사용자 이름을 전달합니다.)
$ ssh -Nf -L2222:destination.host-B.address:22 [email protected]
$ ssh -p 2222 -X userB@localhost
답변3
A를 통해 포트포워딩이 가능할 수도 있습니다.
$ ssh -Nf -L2222:B:22 A
로컬 컴퓨터에서 A를 통해 B로 전달되는 ssh 프로세스를 시작하고 배경화합니다. 그런 다음 다음을 사용하여 B에 연결합니다.
$ ssh -p 2222 -X localhost