작업하려면 로컬 컴퓨터에서 컴퓨터 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