두 개의 SSH 터널을 통해 X11 전달

두 개의 SSH 터널을 통해 X11 전달

작업하려면 로컬 컴퓨터에서 컴퓨터 A를 통해 컴퓨터 B로 SSH를 통해 연결해야 합니다. 문제는 컴퓨터 A에 X11 전달 기능이 없고 이를 변경할 수 있는 슈퍼유저 권한이 없다는 것입니다. 나에게는 머신 B에 대한 수퍼유저 권한이 있고 X11 전달이 켜져 있습니다.

A에서 X11 전달을 활성화하지 않고 B에서 A를 통해 내 로컬 컴퓨터로 X11을 전달할 수 있는 방법이 있습니까?

실행을 시도했지만 로그인 시 머신 A가 계속 출력 ssh -t -X user@A ssh -X user@B됩니다 ssh -t user@A ssh -X user@B .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

귀하의 답변에 대해 @rudmeier에게 진심으로 감사드립니다.

문제가 있어요CNCssh를 사용할 때 옵션이 있지만 이는 변경됩니다(@aDroid의 설명에 따라 다름)여기) 나에게 효과적입니다. 그래서 이것은 본질적으로 동일합니다한 문장 답변최신 버전의 OpenSSH의 경우 @rudmeier의 내용은 다음과 같습니다.

$ 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 프로세스를 시작하고 백그라운드로 진행합니다. 그런 다음 사용

$ ssh -p 2222 -X localhost

관련 정보