SSH 터널 오류: "채널 1: 열기 실패: 관리자 금지: 열기 실패"

SSH 터널 오류: "채널 1: 열기 실패: 관리자 금지: 열기 실패"

이 SSH 터널을 열면:

ssh -nXNT -p 22 localhost -L 0.0.0.0:8984:remote:8983

localhost:8984에서 실행 중인 HTTP 서버에 액세스하려고 하면 다음 오류가 발생합니다.

channel 1: open failed: administratively prohibited: open failed

이 오류는 무엇을 의미합니까? 어떤 기계에서 이 문제를 해결할 수 있나요?

답변1

채널 1: 열기 실패: 관리 금지: 열기 실패

위 메시지는 SSH 서버가 SSH 클라이언트의 사이드 채널 열기 요청을 거부했음을 의미합니다. 이는 일반적으로 에서 발생 -D하거나 전달된 데이터를 전달하기 위해 SSH 스트림의 별도 채널이 필요하기 때문입니다 -L.-w

-L(에도 적용 가능 )을 사용하고 있으므로 -DSSH 서버가 이 요청을 거부하게 만드는 두 가지 관련 옵션이 있습니다.

  • AllowTcpForwarding(Steve Buzonas가 언급했듯이)
  • PermitOpen

이러한 옵션은 에서 찾을 수 있습니다 /etc/ssh/sshd_config. 다음 사항을 확인해야 합니다.

  • AllowTCPForwarding존재하지 않거나, 주석 처리되었거나, 다음으로 설정되었습니다.yes
  • PermitOpen존재하지 않거나, 주석 처리되었거나 any [1] 로 설정되었습니다.

또한 SSH 키를 사용하여 연결하는 경우 SSH 키에 해당하는 항목에 OR 문이 ~/.ssh/authorized_keys없는지 확인해야 합니다 [2] .no-port-forwardingpermitopen

PermitTunnel-w 옵션을 사용하려는 경우 해당 옵션은 특정 명령과 관련이 없지만 이 주제와 어느 정도 관련이 있습니다.


답변2

아주 이상한 경우로, 로컬 터널을 생성하려고 할 때에도 이 오류가 발생했습니다. 내 명령은 다음과 같습니다

ssh -L 1234:localhost:1234 user@remote

문제는 원격 호스트에 /etc/hosts"localhost" 항목이 없으므로 SSH 서버가 터널 설정 방법을 모른다는 것입니다. 이것은 이 상황에 대한 매우 불친절한 오류 메시지입니다. 마침내 알아내서 기쁘네요.

교훈: 터널의 대상 호스트 이름이 DNS 또는 /etc/hosts.

답변3

적어도 한 가지 대답은 어떤 이유로 "원격" 시스템에 ssh를 사용하여 액세스할 수 없다는 것입니다. 오류 메시지는 정말 말도 안됩니다.

답변4

ControlPath이 오류는 ssh 옵션을 사용하고 ControlMaster여러 클라이언트 연결(한 클라이언트에서 동일한 user@server로) 간에 재사용하기 위해 소켓 연결을 공유할 때 확실히 나타납니다. 너무 많은 연결(그 의미가 무엇이든 제 경우에는 약 20개 연결)을 열면 이 메시지가 나타납니다. 이전 연결을 모두 닫으면 새 연결을 열어 다시 한도에 도달할 수 있습니다.

관련 정보