ssh: 특정 호스트에 대해 비활성화한 X11 전달이 작동하지 않는 이유는 무엇입니까?

ssh: 특정 호스트에 대해 비활성화한 X11 전달이 작동하지 않는 이유는 무엇입니까?

SSH 별칭을 사용합니다

alias ssh
alias ssh='ssh -t -K -Y

SSH를 사용하여 X11을 전달하고 싶었습니다(호스트 하나 제외). 그래서 다음과 같이 했습니다.

vim .ssh/config

host myhost
   port 22
   ForwardX11 no
   HostkeyAlgorithms +ssh-rsa
   PubkeyAcceptedAlgorithms +ssh-rsa

하지만..

ssh myhost 
sh: xauth: command not found
myuser@myhost$ 

내 옵션이 무시되는 것 같습니다..왜죠?

나도 시도했다

   ForwardX11 no
   ForwardX11trusted no

그러나 성공하지 못했습니다.

해결책은 이것이었을 수 있습니다 ...

\ssh myhost

따라서 -t -K -y는 무시되지만 더 깔끔한 솔루션을 선호합니다.

잊어버렸어요: 원격 서버가 dropbear를 사용합니다

읽다이 페이지서버의 특정 키에 대해 X11을 비활성화할 수 있다는 것을 알았습니다.

vim .ssh/authorized_keys

no-X11-forwarding ssh-rsa......

하지만 이 경우에는 \ssh 명령도 거부됩니다!

ssh myhost
X11 forwarding request failed on channel 0
Connection to myhost closed by remote host.
Connection to myhost closed.

\ssh myhost 
Connection to myhost closed by remote host.
Connection to myhost closed.

서버에서 이 줄을 사용하면 작동하지만 pubkey에는 사용할 수 없으므로 비밀번호가 필요합니다.

no-agent -forwarding, no-port-forwarding, no-x11-forwarding ssh-rsa....

답변1

예비 설명

당신이 태그했어요하지만 SSH가 의심 스럽습니다.고객sshDropbear에서(당신이 실제로 그럴지는 의심스럽습니다 . 당신이 사용한 모든 옵션도 지원하지 않는 dbclient것 같습니다 ). dbclient따라서 이 답변에서는 OpenSSH SSH 클라이언트의 동작을 조사합니다.

(저는 개인적으로 모든 클라이언트가 질문과 관련된 측면에서 OpenSSH의 동작을 복제할 것으로 기대합니다. 요점은 OpenSSH가 SSH 구현을 위한 사실상의 표준이라는 것입니다.)


분석하다

~에서man 5 ssh_config:

ssh(1)다음 소스에서 다음 순서로 구성 데이터를 가져옵니다.

  1. 명령줄 옵션
  2. 사용자 프로필( ~/.ssh/config)
  3. 시스템 전체 구성 파일( /etc/ssh/ssh_config)

각 매개변수에 대해 처음 얻은 값이 사용됩니다. […]

별칭을 사용하면 ssh -Y구성 파일에서 무시되는 ssh. 명령줄 옵션을 사용하게 됩니다. ForwardX11 no구성 파일의 옵션이 작동하도록 하려면 반대 명령줄 옵션을 사용하면 안 됩니다. 명령줄 옵션이 가장 먼저 중요합니다. 그게 전부입니다.


해결책

당신은 다음과 같이 썼습니다:

하나의 호스트를 제외하고 SSH를 사용하여 X11을 전달하고 싶습니다

별칭으로 수행하지 말고 구성 파일에서 구현하십시오.

host myhost
   ForwardX11 no

host *
   ForwardX11 yes
   ForwardX11Trusted yes

설명서의 지침을 참고하세요.

각 매개변수에서 처음 얻은 값을 사용하므로 파일 시작 부분에 더 많은 호스트별 선언을 제공하고 끝 부분에 일반 기본값을 제공해야 합니다.

즉 , 위의 예와 정확히 host myhost동일해야 하며 그 반대가 아니어야 합니다.host *

관련 정보