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


184

이 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

이 오류는 무엇을 의미하며 어떤 컴퓨터에서 문제를 해결할 수 있습니까?


어쩌면 내가 누락 된 것이 있지만 왜 ssh 클라이언트를 사용하여 웹 서버에 액세스하려고합니까?
Faheem Mitha

여기서 X11 (-X 옵션)을 전달하는 이유는 무엇입니까? HTTP 만 전달하려면 필요하지 않습니다. 참고로 IMHO ssh는 여러 포트에서 웹 서버를 사용할 수 있도록하는 잘못된 솔루션 일 수 있습니다.
Marcel G

29
필자의 remote경우 " 호스트 이름을 확인할 수 없음"을 의미하는 것으로 나타났습니다 .
RobM

3
아래의 수십 가지 답변에서 볼 수 있듯이 오류 메시지는 매우 구체적으로 보이지만 일반적인 오류로 이해해야합니다. 일반적으로 해결책은 원격에서 쉘을 열고 동일한 연결을 시도하여 실제 원인을 확인하는 것입니다. 가장 일반적인 실제 원인은 다음과 같습니다.
Stéphane Gourichon

는 DNS 확인 실패이 오류가 발생할 수 있습니다 플러스 연결이 될 때까지 정지 될 수 있습니다 시간 초과 : superuser.com/a/700677
user423430

답변:


122

채널 1 : 개방 실패 : 관리 상 금지 : 개방 실패

위의 메시지는 SSH 서버가 사이드 채널 열기에 대한 SSH 클라이언트의 요청을 거부하는 것을 나타냅니다. 이것은 일반적에서 온다 -D, -L또는 -wSSH를 스트림에 별도의 채널을 통해 전달 된 데이터를 실어 필요로.

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

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

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

  • AllowTCPForwarding 존재하지 않거나 주석 처리되었거나 yes
  • PermitOpen존재하지 않거나 주석 처리되었거나 any[1]

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

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

[1] sshd_config(5)맨 페이지의 전체 구문 .

[2] authorized_keys(5)맨 페이지의 전체 구문 .


TCPKeepAlive yes AllowTCPForwarding yes PermitOpen 몇 가지 "오픈 실패"가 있지만 정상적인 것 같습니다. 일이 잘 작동합니다.
Pierre Thibault가

4
참고 사항 : SSH 및 SSH로 탭 / 튜닝 장치를 만들려고 할 때이 오류가 발생할 수 있지만 커널에서는 허용하지 않습니다. 이것은 LXC 컨테이너에서 발생할 수 있습니다. 자세한 내용은 blog.felixbrucker.com/2015/10/01/… 을 참조하십시오. 이 경우 lxc.cgroup.devices.allow = c 10:200 rwm컨테이너 구성 에 추가 하고 /dev/net/tun존재하지 않는 경우 mknod /dev/net/tun c 10 200; chmod 666 /dev/net/tun컨테이너에서 부팅시 실행되도록 할 수 있습니다.
Azendale

@Azendale, 그거 흥미 롭습니다. 감사합니다. 똑같은 오류 메시지 또는 약간 다른 오류가 발생합니까?
hyperair

1
@ St.Antario를 AllowTcpForwarding사용하면 SSH를 통해 TCP 포트를 전달할 수 있습니다 -L 0.0.0.0:8984:remote:8983. 이는 매개 변수가 요청하는 것입니다. AllowTcpForwarding로 설정된 경우 noSSH는 포트 전달 요청을 거부하여 해당 오류를 보게됩니다.
hyperair

2
의 대문자 편집 시도 AllowTCPForwarding에를 AllowTcpForwarding하지만, SE는 6 자 이상 변경하고자합니다. 따라서 Tcp처음으로 올바르게 사용한 올바른 케이스가 버전 이라는 점에 주목하십시오 .
dbreaux

51

매우 이상한 경우 로컬 터널을 만들려고 할 때도이 오류가 발생했습니다. 내 명령은 다음과 같습니다.

ssh -L 1234:localhost:1234 user@remote

문제는 원격 호스트 /etc/hosts에 "localhost"에 대한 항목이 없었기 때문에 ssh 서버는 터널을 설정하는 방법을 알지 못했습니다. 이 경우 매우 친숙하지 않은 오류 메시지입니다. 나는 마침내 그것을 알아 낸 것이 기쁘다.

교훈 : 원격 호스트가 DNS 또는를 통해 터널의 대상 호스트 이름을 확인할 수 있는지 확인하십시오 /etc/hosts.


2
고마워, 이것은 나에게 문제였다. IP의 호스트 이름을 로컬로 만들었지 만 원격 ssh 서버에는 만들지 않았습니다.
dev_feed

2
"터널의 대상 호스트 이름"은 해독하기가 약간 어렵습니다. 예를 들어서 예제의 "대상 호스트 이름"을 내 대상 호스트 이름으로 바꾸고 (내가 의미하는 바를 이해 한 경우)이 작업을 수행 할 수있는 구체적으로 실행 가능한 예제를 제공 할 수 있습니까?
테렌스 브랜 논

1
나는 당신의 의견이 이해가되지 않습니다. 원격 시스템에 localhost에 대한 항목이 없다고 말합니다. 그러나 원격 호스트는 로컬 호스트 이름이 아닌 대상 호스트 이름을 분석해야한다고 말합니다 . 이전과 이후의 상황에 대한 완전한 구체적인 예가 도움이 될 것입니다.
테렌스 브랜 논

1
위 명령의 @TerrenceBrannon에서 "localhost"는 터널 의 대상 호스트 이름입니다 . SSH 터널을 만들 때 ssh 명령은 먼저 원격 시스템에 로그인 user@remote한 다음 ( ) 원격 끝에서 나열된 대상 호스트에 터널을 설정합니다 (위 명령에서이 명령은 localhost). 이 작업을 수행 할 때 원격 호스트 에서 호스트 이름 확인 체계를 사용합니다 . 따라서 SSH를 연결 한 컴퓨터가 확인할 수없는 localhost경우이 오류 메시지가 표시됩니다.
cobbzilla

1
필자의 경우 대상 호스트 이름을 잘못 입력하는 것만 큼 간단했기 때문에 해결되지는 않았지만 너무 오래 오타를 보지 못했습니다.
랜달

25

적어도 하나의 대답은 어떤 이유로 ssh를 사용하여 기계 "원격"에 도달 할 수 없다는 것입니다. 오류 메시지가 잘못되었습니다.


2
아닙니다. 방화벽 구성에서 거부 플래그로 icmp-admin-prohibited를 항상 사용합니다.
Shadur

9
+1, 관리적으로 금지 된 메시지는 방화벽 차단이라고 믿게되지만 방화벽 차단은 없지만 원격 호스트에 대한 경로가 없기 때문에 열기에 실패하면 동일한 메시지를받습니다.
Steve Buzonas 2016 년

1
나는이 문제를 사냥하는 데 몇 분을 보냈습니다. 고맙게도 중간 스테이션 로그 파일을 확인하면 분명합니다.
yaccz 2016 년

실제로 "원격"에 도달 할 수없는 경우 다운, 오프라인, 존재하지 않기 때문에 호스트 이름을 확인할 수 없기 때문에이 오류 메시지가 표시됩니다.
Michael Martinez

18

서버에서 '원격'을 확인할 수 없으면 해당 오류가 발생합니다. IP 주소로 교체하고 문제가 해결되는지 확인하십시오 ...

(기본적으로 Neil의 답변과 동일하지만 내 측면에서 문제가되는 것을 확실히 알았습니다) [내 ~/.ssh/config파일에 컴퓨터 이름의 별칭이 있었고 원격 컴퓨터는 해당 별칭에 대해 아무것도 알지 못했습니다 ...


-D브라우저에서 (DynamicForward)를 SOCKS 프록시로 사용할 때도 같은 오류가 표시 될 수 있습니다 . 즉, 터널 호스트가 확인할 수없는 웹 사이트에 액세스하려고합니다.
timss

10

당신은 SSH 옵션을 사용할 때이 오류가 결정적으로 팝업 ControlPathControlMaster여러 클라이언트 연결 사이에 재사용 할 하나의 소켓 연결을 공유 (하나의 클라이언트에서 동일한 사용자 @ 서버에). 너무 많이 열면 (내 경우에는 ~ 20 개의 연결이 무엇이든)이 메시지가 생성됩니다. 이전 연결을 닫으면 다시 한도까지 새로 열 수 있습니다.


이 ControlMaster 멀티 플렉스 제한을 설정하는 위치를 찾아 여기에 왔습니다. 누구나 알고 있다면 공유하는 것 이상입니다.
clacke

1
clacke :에 따라 bugs.debian.org/cgi-bin/bugreport.cgi?bug=546854 이를 설정 / etc / ssh / sshd_config 파일에서 MaxSession 매개 변수를 추가 할 수 있습니다. 매뉴얼 페이지에 따르면 기본적으로 10으로 설정되어 있습니다.
oliver

@oliver : 확인, MaxSession이 작동합니다. 감사합니다. 내 통합 문서에서 64로 충돌했습니다.
Matej Kovac

2
조심, 그렇지 않아 MaxSession있지만 MaxSessions. 보호 기능이 있지만 ssh 서버 구성을 중단하지 마십시오 ...
Stéphane Gourichon

8

"관리 상 금지됨"은 "관리자가이 연결을 명시 적으로 차단하려고합니다"로 표시되는 특정 ICMP 메시지 플래그입니다.

iptables 설정을 확인하십시오.


5
반드시 그런 것은 아닙니다. 호스트가 요청을 처리 할 수 ​​없을 때 메시지가 생성됩니다. 일반적으로 관리자가 연결을 차단했기 때문에 발생하지만 명시 적으로 차단되지 않았지만 원하는 호스트에 대한 경로가 없을 수도 있습니다. AFAIK ssh에는 연결이 실패한 이유를 결정하는 논리가 없으며 연결하려고하면 연결이 존재한다고 가정하고 연결할 수 없으면 의도적으로 연결이 차단되어 있어야합니다.
Steve Buzonas 2016 년

2
아뇨 "호스트에 대한 경로 없음"이라고 말하는 ICMP 응답 유형과 "관리 상 금지됨"이라고 표시된 ICMP 응답 유형 간에는 뚜렷한 차이가 있으며, 누군가 라우터를 의도적으로 잘못 구성하지 않는 한 후자는 주석에서 정확히 말하는 것을 의미합니다.
Shadur

1
해결되지 않은 호스트 이름을 사용할 때 '관리 상 금지'되었습니다. 포괄적 인 것으로 보입니다. 아마도 ssh가 번역을하고 있습니까?
Ganesh Sittampalam

5

비슷한 문제

또 다른 가능한 리드

~/.ssh/authorized_keys와 함께 사용하는 것과 동일한 문제가있었습니다 permitopen.

autossh터널을 만드는 데 사용할 때 두 개의 포트가 필요합니다.

  • 연결 용 (10000),
  • 모니터링을위한 것 (10001).

클라이언트 측

이것은 나에게 모니터링 포트와 비슷한 문제를 주었다.

autossh -M 10001 -o GatewayPorts=yes -o ServerAliveInterval=60  -o TCPKeepAlive=yes -T -N -R :10000:localhost:22 -i ~/.ssh/id_rsa user@remote

나는 그 메시지를 받았다 (10 분 후) :

channel 2: open failed: administratively prohibited: open failed

원격 측

/var/log/auth.log포함 :

Received request to connect to host 127.0.0.1 port 10001, but the request was denied.

~/.ssh/authorized_keys(원격)에서 나는 이것을 가지고 있었다 :

command="/home/user/tunnel",no-X11-forwarding,no-pty,permitopen="localhost:10000",permitopen="localhost:10001" ssh-rsa AAAA...

그것을 해결하는 방법

localhost인스턴스를 127.0.0.1다음 과 같이 대체하여이 문제를 해결했습니다 .

command="/home/user/tunnel",no-X11-forwarding,no-pty,permitopen="127.0.0.1:10000",permitopen="127.0.0.1:10001" ssh-rsa AAAA...

SSH localhost는 이것이 바로 가기 라는 것을 이해하지 못하는 것 같습니다 127.0.0.1. 따라서 메시지 auth.log관리적으로 금지 된 메시지입니다.

여기서 이해하는 것은 관리 상 "서버 측의 특정 구성으로 인해"라는 의미입니다.


localhost가 :: 1 (ipv6)에 매핑되었을 가능성이 있으며 어떤 이유로
Jo Rhett

4

경우에도 발생 /etc/sshd_config

AllowTcpForwarding no 

세트. 그것이로 전환 yesTCP 전송을 허용 할 수 있습니다.


4

내 경우, 나는 대체했다 localhost127.0.0.1에서 :

ssh -L 1234:localhost:3389 user@remote

작동하도록

SSH 터널링을 통해 AWS EC2에 연결하는 것에 대한rdesktop -L localhost:1234 Amazon의 지침 을 따르 려고했습니다 . /etc/ssh/sshd_config가장 높은 투표 응답 에 따라 (클라이언트 및 서버 모두 Ubuntu 16.04 LTS를 실행) 변경하려고했습니다 . 나는 또한 그 확인 localhost/etc/hosts양쪽에.

ssh명령 자체를 다음과 같이 변경할 때까지 아무것도 작동하지 않았습니다 .

ssh -L 1234:127.0.0.1:3389 user@remote

정말 고맙습니다!
Thibaut Barrère

3

명확한 답을 찾으려면 몇 가지 문제 해결 활동이 필요합니다.

  • 사용자의 ssh 구성에서 포트 전달이 사용 가능한지 확인하십시오.
  • ssh (-v)의 세부 정보 표시
  • 로컬 호스트의 ssh 로그를 확인하고 원격 호스트의 보안 로그를 확인하십시오.
  • 다른 원격 포트를 테스트하고
  • iptables 설정을 확인하십시오 (Shadur가 말했듯이).

3

원격을 -L 매개 변수에 넣을 때이 오류가 발생했으며 0.0.0.0도 중복되어 동일한 결과로 생략 할 수 있으며 작동하려면 -g를 추가해야한다고 생각합니다.

이것은 터널링에 사용하는 라인입니다. ssh -L 8983:locahost:8984 user@remote -4 -g -N

-4 tells to use only ipv4
-g Allows remote hosts to connect to local forwarded ports.
-N Do not execute a remote command.  This is useful for just forwarding ports (protocol version 2 only). I use this to clog the terminal so I don't forget to close it since generally I need the tunnels temporarily.

3

로컬 쪽의 포트에 바인딩 할 수 없어서 발생할 수도 있습니다.

ssh -Nn -L 1234:remote:5678 user@remote

이 명령은 로컬 시스템의 청취 포트 1234를 바인딩하려고 시도하며 원격 시스템의 포트 5678에있는 서비스에 맵핑됩니다.

로컬 시스템의 포트 1234가 다른 프로세스 (예 : 백그라운드 ssh -f 세션)에서 이미 사용중인 경우 ssh는 해당 포트에서 수신 할 수 없으며 터널이 실패합니다.

문제는이 오류 메시지가 여러 가지를 의미 할 수 있으며 "관리 상 금지됨"은 때때로 잘못된 아이디어를 제공한다는 것입니다. 따라서 DNS, 로컬과 원격 사이의 방화벽 및 sshd_config를 확인하는 것 외에도 로컬 포트가 이미 사용 중인지 확인하십시오. 사용하다

lsof -ti:1234

다른 사용자가 소유 한 프로세스를 나열하려면 lsof에 대해 sudo가 필요할 수 있습니다. 그런 다음 사용할 수 있습니다

ps aux | grep <pid>

그 과정이 무엇인지 알아낼 수 있습니다.

하나의 명령으로이 모든 것을 얻으려면 :

ps aux | grep "$(sudo lsof -ti:1234)"

2

터널을 만들려고 할 때 같은 메시지가 나타났습니다. 원격 측의 dns 서버에 문제가있었습니다. 문제가 다시 작동했을 때 해결되었습니다.


2

이 문제가 DNS 문제 일 수 있다고 언급 한 사람이 아무도 없습니다.

journalctl -f
channel 3: open failed: administratively prohibited: open failed
Mar 10 15:24:57 hostname sshd[30303]: error: connect_to user@example.com: unknown host (Name or service not known)

remote해결할 수 없거나 user@포트 전달 논리에 작동하지 않는 여기에서 수행 한 것과 같이 알 수없는 구문을 입력 한 경우 표시 될 수 있습니다 .


2

제 경우에는 서버가 내 계정에서 암호를 강제로 변경하려고하는 동안 셸 액세스가없는 터널을 요청했기 때문에 문제가 발생했습니다. 껍질이 없기 때문에 그것을 볼 수 없었고 오류 만 받았습니다.

channel 2: open failed: administratively prohibited: open failed  

내 터널 구성은 다음과 같습니다.

ssh -p [ssh-port] -N -f -L [local-port]:127.0.0.1:[remote-port]
[server-address]

서버에 직접 로그인 할 때 오류가 발생했습니다 (-N -f없이).

WARNING: Your password has expired. You must change your password now
and login again!

쉘 액세스로 로그인하고 비밀번호를 변경하여 문제를 해결했습니다. 그런 다음 간단히 쉘 액세스없이 터널을 사용할 수 있습니다.


1

SFTP를 사용하여 연결할 수있는 권한이있는 사용자와 SSH를 통해 연결하려고 할 때이 문제가 발생했습니다.

예를 들어, 이것은 서버의 /etc/ssh/sshd_config:

Match group sftponly
    ForceCommand internal-sftp
    ChrootDirectory /usr/chroot/%u
    [...]
Match

따라서이 경우 SSH를 사용하려면 동등한 sftponly그룹 에서 사용자를 제거 하거나 SFTP로 제한되지 않은 사용자를 사용하여 연결해야합니다.


1

연결 /etc/resolv.conf하려는 서버에 비어 있는지 확인하십시오 ssh. 여러 번이 빈 /etc/resolv.conf파일 과 관련이 있음을 발견했습니다.

루트가 아닌 경우 공개 호스트 이름에서 ping또는 telnet(80)을 시도하여 서버를 확인할 수 있습니다 .

root@bananapi ~ # telnet www.google.com 80
telnet: could not resolve www.google.com/80: Name or service not known

네임 서버 레코드를 /etc/resolv.conf다음에 추가 한 후 :

root@bananapi ~ # telnet www.google.com 80
Trying 74.125.195.104...
Connected to www.google.com.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.0 302 Found
Location: http://www.google.ro/?gws_rd=cr&ei=8fStVZ-hMIv6UvX6iuAK

그러나 /etc/resolv.conf비어있는 이유도 확인해야합니다 (해당되는 경우 일반적으로 서버의 dhcp 클라이언트가 네임 서버 레코드로 채워짐).


1

SSH를 데비안에 튜닝하는 동안 같은 메시지가 나타납니다. 원격 시스템에 여유 공간이없는 것으로 나타났습니다. 디스크 공간을 확보하고 재부팅 한 후 터널이 작동하기 시작했습니다.


0

cygwin 에서이 오류를 보았으며 Linux에서도 마찬가지이며 나를 위해 일했습니다. 내 경우에는 ssh -ND * : 1234 user@127.0.0.1을 수행하고 브라우저를 해당 comp-socks server에 연결하면 브라우저가 탐색되었지만 ssh 명령을 실행 한 comp에서 해당 오류가 표시됩니다. 브라우저는 프록시를 통해 검색하거나 적어도 주요 연령을 보인 것처럼 보이지만 각 요청이있는 콘솔-적어도 하나의 사이트에 대해. 그러나이 변경으로 인해 실패한 메시지가 제거되었습니다.

http://linuxindetails.wordpress.com/2010/02/18/channel-3-open-failed-administratively-prohibited-open-failed/

While trying to do some SSH tunneling, here is the error I got :
channel 3: open failed: administratively prohibited: open failed
To avoid this kind of error, have a look at the SSH daemon configuration file :
/etc/ssh/sshd_config
Add possibly the following line :
root@remote-server:~# echo “PermitTunnel yes” >> /etc/ssh/sshd_config
Then, restart your sshd server :
root@remote-server:~# service ssh restart
or

root@remote-server:~# /etc/init.d/ssh restart

AFAIK 터널링은 기본적으로 활성화되어 있습니다. 비활성화하면 보안 계층이 추가되지 않으며 주로 타사 터널을 추가하는 것이 불편합니다. 오프 사이트 위치에서 내부 서버로 프록시하려고하는 것과 비슷한 문제가 있으며 터널링이 활성화되어 있으며 iptables가 기본 조치 인 플러시됩니다 ACCEPT.
Steve Buzonas

@SteveBuzonas / etc / sshd_config에서 이것을 보았습니다 .a) 터널링을 비활성화하지 않습니다. b) 내 대답과 관련하여 해결책은 좋지 않을 수 있습니다. sshd_config가 해당 옵션에 대해 말한 내용은 다음과 같습니다. # 터널링 된 일반 텍스트 암호를 비활성화하려면 여기서 no로 변경하십시오! #PermitTunnel no
barlop

@SteveBuzonas는 아마도 no로 설정되어 있는지 확인하고 실제로 터널링이 기본적으로 활성화되어 있으므로 터널링 할 수 있습니다.
barlop

나는 AllowTCPForwarding당신이 이야기하고있는 의견이 아니오로 설정되어 # To disable tunneled clear text있는 것과 관련이 PasswordAuthentication있으며, PermitTunneltun / tap을 통해 레이어 2 또는 레이어 3 네트워킹 터널을 허용하고 기본값은 no입니다. L, R 및 D 옵션은 터널링을위한 장치가 아닌 TCP 전달을 사용합니다.
Steve Buzonas 2016 년

0

다른 시나리오는 액세스하려는 서비스가 실행되고 있지 않은 것입니다. 다른 날에 연결하려고 시도한 httpd 인스턴스가 중지되었음을 기억하기 위해이 문제에 부딪 쳤습니다.

문제를 해결하기위한 단계는 가장 간단한 것부터 시작하는 것입니다. 가장 간단한 방법은 다른 컴퓨터로 가서 로컬로 연결할 수 있는지 확인한 다음 클라이언트 컴퓨터를 향해 다시 작업하는 것입니다. 적어도 이것은 의사 소통이 일어나지 않는 시점에서 운동 할 수있게 해줍니다. 다른 접근법을 취할 수 있지만 이것은 나를 위해 일한 것입니다.


유용한 일반적인 팁이지만 질문에 대한 답변은 아닙니다.
Kyle Jones

0

라우터에서 DNS 리 바인딩 보호 를 확인하십시오 . 내 라우터 (pfsense)에는 기본적으로 DNS 리 바인딩 보호가 활성화되어 있습니다. SSH에서 '채널 열기 : 관리 금지 : 열기 실패'오류가 발생했습니다.


0

나는 같은 문제가 있었고 그것이 DNS라는 것을 깨달았습니다. 트래픽이 터널링되었지만 DNS 요청 번호 DNS 호스트 파일을 수동으로 편집하고 액세스하려는 서비스를 추가하십시오.


0

내 경우:

$ssh -D 8081 localhost >>log1.txt 2>&1 &

----wait for 3 days

$tail -f log1.txt
channel 963: open failed: connect failed: Connection refused
channel 963: open failed: connect failed: Connection refused
channel 971: open failed: connect failed: Connection reset by peer
channel 982: open failed: connect failed: Connection timed out
channel 979: open failed: connect failed: Connection timed out
channel 1019: open failed: administratively prohibited: open failed
accept: Too many open files
channel 1019: open failed: administratively prohibited: open failed
accept: Too many open files
channel 1019: open failed: administratively prohibited: open failed

$ps  axu | grep 8081
root       404  0.0  0.0   4244   592 pts/1    S+   05:44   0:00 grep --color=auto 8081
root       807  0.3  0.6   8596  6192 ?        S    Mar17  76:44 ssh -D 8081 localhost

$lsof -p 807 | grep TCP
ssh     807 root 1013u  sock     0,8      0t0 2076902 protocol: TCP
ssh     807 root 1014u  sock     0,8      0t0 2078751 protocol: TCP
ssh     807 root 1015u  sock     0,8      0t0 2076894 protocol: TCP
.....

$lsof -p 807 | wc -l
1047

$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   malcolm-desktop

$ssh localhost
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-53-generic i686)

----after restart ssh -D 8081 localhost
$ lsof -p 1184 | grep TCP
ssh     1184 root    3u  IPv4 2332193      0t0   TCP localhost:37742->localhost:ssh (ESTABLISHED)
ssh     1184 root    4u  IPv6 2332197      0t0   TCP ip6-localhost:tproxy (LISTEN)
ssh     1184 root    5u  IPv4 2332198      0t0   TCP localhost:tproxy (LISTEN)
ssh     1184 root    6u  IPv4 2332215      0t0   TCP localhost:tproxy->localhost:60136 (ESTABLISHED)
ssh     1184 root    7u  IPv4 2336142      0t0   TCP localhost:tproxy->localhost:32928 (CLOSE_WAIT)
ssh     1184 root    8u  IPv4 2336062      0t0   TCP localhost:tproxy->localhost:32880 (CLOSE_WAIT)

0

쓰는 동안이 오류가있어 이 항목 에서 내 블로그 :

/etc/ssh/sshd_config 같은 것이 있었다 :

Match Group SSHTunnel_RemoteAccessGroup
    AllowTcpForwarding yes
    PermitOpen=sshbeyondremote.server.com:22

그러나 ~/.ssh/config했다 :

Host remote.server.com
  HostName remote.server.com
  Port 10022
  User useronremote
  IdentityFile ~/.ssh/keys/key1/openssh.keyforremote.priv
  LocalForward 2222 SSHBeyondRemote.server.com:22

차이 주 케이스 사이 (대문자) SSHBeyondRemote.server.com:22sshbeyondremote.server.com:22를 .

사례를 수정 한 후에는 더 이상 문제를 보지 못했습니다.

나는 사용하고 있었다 :

OpenSSH 클라이언트 버전 :

  • OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 2016 년 3 월 1 일

OpenSSH 서버 버전 :

  • OpenSSH_7.6p1 데비안 -4, OpenSSL 1.0.2n 2017 년 12 월 7 일

1
제휴 관계에있는 것을 연결, 홍보, 인용 또는 언급하려는 경우 해당 제휴를 명시 적으로 공개해야합니다. ``모으는 동안 (링크) ''라고 말하는 것만으로는 충분하지 않습니다 (내가 자신의 블로그에 링크하고 있음을 알기 전까지는 그 의미를 이해하지 못했기 때문에). Stack Exchange 사용자 이름과 일치하는 URL로는 충분하지 않습니다. 참조 : 스패머가되지 않는 방법 ,  명백한 자기 홍보를 피하십시오 ... (계속)
Scott

(계속)… 그리고 언제 제휴 요건을 시행해야합니까?    귀하의 블로그, 고용주, ​​귀하가 개발 한 잘 알려진 소프트웨어, 귀하가 작성한 서적, 귀하가 연계한 프로젝트 또는 기타 프로젝트 등을 사용자 프로필 페이지 에 자유롭게 언급 할 수 있습니다. .
Scott

0

다른 이름 확인 원인 : 내 / etc / hosts에 다음과 같이 서버 이름에 대한 잘못된 IP 주소 (localhost가 아닌)가 있습니다.

127.0.0.1     localhost
192.168.2.45  server.domain.com server

그러나 구성된 서버 IP (및 호스트 / dig 명령으로 확인 된 DNS 이름)는 192.168.2.47입니다. 이전 IP 재구성으로 인한 간단한 오타. / etc / hosts를 수정 한 후 터널 연결이 완벽하게 작동했습니다.

ssh user@server.domain.com -L 3456:127.0.0.1:5901

터널에 localhost 리터럴 IP를 사용할 때 실제 IP가 오류를 일으킨 것은 이상합니다. 배포판 : Ubuntu 16.04 LTS.


0

내가 그 메시지를받은 이유는 가장 일반적인 것이 아니지만 언급 할 가치가 있습니다. 스크립트로 터널 목록을 생성했으며 열 표시를 보장하기 위해 각 마지막 바이트를 2 바이트로 인쇄했습니다. 192.168.66.08로 터널 전달을 열려고 할 때 gethostbyaddr에 의해 '08'이 잘못된 8 진수로 해석되기 때문에 항상 실패했습니다. :)


0

이 메시지에 대한 많은 근본 원인이있는 것 같습니다. 필자의 경우 키 파일을 올바르게 제공하지 않았기 때문에 리모컨에 액세스 할 수 없었습니다 .

-L옵션은 암시 적 SSH 점프를 추가합니다 (명시 적 SSH 호스트를 요새 / 점프 서버로 효과적으로 사용). 명시 적으로 점프를 수행하고 "proxycommand"를 사용하여 대상 시스템에 로그인 쉘을 작성하여이를 디버그하는 것이 더 쉬울 수 있습니다.

이것이 작동하면 대상 머신을 기반으로 포트 포워드를 수행 할 수 localhost있습니다 (로그인 할 수 있다고 가정).

-N -L 1234:localhost:1234
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.