포트 80을 통해 SSH를 사용할 수 있습니까?


20

기본 포트를 통해 ssh 할 수없는 네트워크 방화벽 뒤에 있습니다. 이 때문에 bzr 브랜치를 내 저장소로 푸시 할 수 없습니다. 어떻게 든 포트 80을 통해 ssh를 프록시하여 분기를 푸시 할 수 있는지 알고 싶습니다.

나는 코르크 마개가 당신을 그렇게 할 수 있다고 들었지만 정확히 어떻게 해야할지 모르겠습니다.

작동하는 프록시 서버를 알고 있다면 언급하십시오.


2
man sshport : host : hostport를 나타냅니다. 그래서 시도하십시오 ssh 80:server.com.
MarkovCh1

-L 또는 -R을 통해 터널을 설정하기위한 것입니다. 터널을 통과하려면 다른 상자가 필요합니다.
Cesium

답변:


19

올바른 회사 방화벽은 포트에 관계없이 트래픽을 검사하므로 포트 변경이 작동하지 않을 수 있습니다.

서버를 제어하고 여전히 시도하려면 sshd 포트를 포트 80으로 변경할 수 있습니다. 경고 포트 80 (서버)에서 실행중인 다른 것이 있으면 작동하지 않으며 완전히 의미 할 것입니다 서버에 대한 SSH 액세스가 끊어집니다!

을 수정 /etc/ssh/sshd_config하고로 변경 Port해야 80합니다. 그런 다음 실행

sudo restart ssh

그런 다음 연결하십시오.

ssh user@host -p80

bzr 경로는 다음과 같습니다. bzr+ssh://host:80/path/


또 다른 방법은 WebDav를 사용하는 것입니다. 방화벽 문제는 포트 80에서 발생하기 때문에 방화벽 문제를 완전히 극복해야하지만 Apache를 실행하고 여러 가지를 설정해야합니다.

  1. WebDav 설치
  2. 지점을 올바른 장소로 이동
  3. 사용 BZR-WebDAV를 연결하는 플러그인

VPN은 옵션 일 수 있지만 ssh잠겨 있으면 제외 될 것으로 예상됩니다.

당신은 네트워크 관리자에게 말씀을 원할 수도 있습니다. 당신은 무언가를해야하고 그들은 당신을 막고 있습니다. 그들이 차단 ssh해야 할 이유가 있다면 , 그것을 상당히 부정적으로 회피하려는 극단적 인 시도를 보게 될 것입니다 ...

간단히 말해 그들과 대화하는 것이 더 안전 할 수 있습니다.


7
IT 부서와 요구 사항을 논의하기 위해 +1하십시오. 많은 환경에서 광산을 포함하여 이러한 유형의 활동은 종료의 근거가됩니다.
Panther

1
또한 ssh 서버가 다른 포트에서 수신 대기하게 Port하려면 /etc/ssh/sshd_config파일의 각 포트마다 하나씩 두 줄 을 두어 포트 22와 80 모두에서 수신 대기하게 할 수 있습니다.
Azendale

나는 목록을 만들지 않을 것이다 (목록이 길고 그 항목들 중 일부에 대한 논의는 매우 정치적으로 빠르게 이루어질 수있다). 그러나이 질문 은 충성스럽게 이행되는 회사 정책을 우회하려는 직원의 상황 이외의 많은 상황을 다룬다. 회사 자체 IT 부서 저는 IT 부서에서 업무 요구를 논의하는 사람들을위한 것이지만, 항상 적용 가능한 것은 아니며 때로는 IT 부서에서 "괜찮지 만 우리는 귀하를 수용하기 위해 어떤 것도 바꾸지 않습니다"라고 대답하기도합니다. 별도로, 포트 22가 VPN에 의해 ​​차단되지 않았다는 것은 상당히 그럴듯하므로 시도해 볼 가치가 있다고 생각합니다.
Eliah Kagan

@Panther 그러면 어떤 사람들은 그 회사 정권을 끝내는 것이 더 행복 할 것입니다.
NeverEndingQueue

15

프록시를 통한 SSH

방화벽이 허용하는 경우 모든 포트에서 ssh를 실행할 수 있지만 ssh 서버는 해당 포트에서 수신 대기해야합니다. 방화벽이있는 대부분의 장소는 해당 포트의 트래픽을 분석하고 HTTP가 아닌 것을 차단하기 때문에 포트 80이 작동하지 않을 수 있습니다. 그러나 일반적으로 HTTPS 포트 인 포트 443은 종종 작동합니다. SSH와 HTTPS는 필터링 소프트웨어와 서로 매우 유사하기 때문에 SSH 세션은 HTTPS 세션처럼 보일 것입니다. (HTTPS와 SSH를 구별 할 수 있으므로 방화벽이 충분히 정교하면 작동하지 않습니다.)

서버를 제어 할 수있는 경우 22 (일반 ssh 포트) 외에 포트 443에서 수신 대기하십시오. 포트를 구성 할 수 있습니다 /etc/ssh/sshd_config: 라인 추가

Port 443

Port 22그 외에도 이미 있어야합니다. 이것은 ssh 서버가 HTTPS 서버가 아니라고 가정합니다. 그렇다면 방화벽에서 사용할 수있는 다른 포트를 찾거나 다른 ssh 서버를 찾으십시오 (아래 전달 참조).

웹 브라우저에서 웹 프록시를 설정할 필요가없는 경우 직접 연결을 시도 할 수 있습니다.

ssh -p 443 myserver.example.com

그래도 문제가 해결되지 않으면 다음에서 별칭을 정의하십시오 ~/.ssh/config.

Host myserver
HostName myserver.example.com
Port 443

웹 브라우저에서 웹 프록시를 설정해야하는 경우 ssh에게 프록시를 통과하도록 지시하십시오. 코르크 마개를 설치하십시오 . 당신이 같은 별칭을 정의 ~/.ssh/config, 어디에 http://proxy.acme.com:3128/당신이 외부로 HTTPS에 사용하는 프록시 (적절한 호스트 이름과 포트로 대체)입니다 :

Host myserver
HostName myserver.example.com
Port 443
ProxyCommand /usr/bin/corkscrew proxy.acme.com 3128 %h %p

SSH를 통한 SSH

위의 기술 중 하나를 사용하여 외부 시스템에 액세스 할 수 있지만 관심이있는 시스템에는 도달 할 수없는 경우이를 사용하여 연결을 전달하십시오. 라는 컴퓨터에 ssh를 사용할 수 mygateway있고 SSH 서버에 연결 mytarget하려는 경우 netcat-openbsd 를 설치하십시오 mygateway(또는 Ubuntu를 실행하지 않는 경우 nc명령 이 있는지 확인하십시오 ). 이것을 당신의 것으로 넣으십시오 ~/.ssh/config:

Host mytarget
ProxyCommand ssh mygateway nc %h %p

아파치 SSH

연결하려는 호스트가 이미 Apache를 실행 중이고 포트 443에서 수신 대기 중이고 해당 호스트를 제어 할 수있는 경우 SSH 연결을 승인하고 전달하도록이 Apache를 설정할 수 있습니다. HTTP를 통한 터널링 SSH (S)를 참조하십시오 .


https를 위해 코르크 따개 대신 nc를 사용할 수도 있습니다. stackoverflow.com/a/15577758/32453
rogerdpack

3

방금 정교한 솔루션을 읽었습니다.

http://benctechnicalblog.blogspot.hu/2011/03/ssh-over-connect-over-port-80.html

홈 서버가 포트 80에서 웹 서버를 실행하더라도 포트 80에서 SSH 홈을 사용할 수 있습니다.

홈 서버가 Apache를 실행한다고 가정합니다. 아이디어는 서버에서 mod_proxy를 활성화 한 다음 localhost (proxy.conf)에 연결하도록 제한하는 것입니다.

<IfModule mod_proxy.c>
         ProxyRequests On
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Deny from all
        </Proxy>
        <Proxy localhost>
          Allow from all
        </Proxy>
        AllowCONNECT 22
        ProxyVia On
</IfModule>

이제 로컬 호스트에 대한 HTTP 연결 요청을 수행 할 수 있으며 웹 서버가 터널을 설정하므로 모든 트래픽이 프록시를 통과해야합니다.

ssh -o 'ProxyCommand nc -X connect -x myhost.example.com:80 localhost 22' myhost.example.com

SSH에 대한 로컬 호스트 연결이 특권이 아닌지 확인하십시오.

포트 80 만 허용하는 라우터 뒤에있는 경우 작동합니다.

프록시 뒤에있는 경우 (웹에 액세스하려면 브라우저에서 프록시를 설정해야 함) 먼저 자신의 호스트에 터널을 설정 한 다음이 터널 내에 다른 CONNECT 요청을 발행하여 호스트에 도착해야합니다. 이것은 더 정교합니다.이를 위해 2 개의 넷캣을 사용해야합니다.

모든 것이 가능하지만 자신의 위험을 감수하십시오 ...

최신 정보:

또는 간단히 브라우저를 통해 SSH를 제공하는 웹 응용 프로그램을 사용하십시오. http://en.wikipedia.org/wiki/Web-based_SSH


2

방화벽에서 포트 80을 통해 이러한 데이터를 전송하지 못하도록 차단하여 SSH 포트를 포트 80으로 변경하도록 서버를 제어 할 수 없거나 포트 80을 통해 SSH를 사용할 수없는 경우 TOR를 시도 할 수 있습니다.

TOR는 거대한 네트워크입니다. 컴퓨터가 전세계 어딘가에 다른 컴퓨터에 연결되어 있고 해당 컴퓨터가 SSH 서버에 도달 할 때까지 다른 컴퓨터에 연결되어 있습니다. 이것은 모든 방화벽에 친화적이며 포트 443에서 발생합니다 (회사가 차단하지 않는 등의 문제는 아닙니다). 말 그대로 거대한 프록시 또는 VPN이며 암호화되어 있습니다. 이 방법으로 모든 포트의 모든 호스트 (포트 22의 서버 SSH)에 액세스 할 수 있습니다.

www.torproject.org 에서 온라인으로 살펴보십시오 .


2

죄송합니다. 악마의 옹호자를해야합니다.

나는 이것을하는 이유가 가장 크다는 것을 알고 있지만 왜 네트워킹 / 방화벽 관리자가 찾고있는 특정 포트를 열지 않습니까? 보안 관점에서, 웹 검사가 아무것도 놓칠 수있는 기회를 원하십니까? std 트래픽을 위해 포트 80을 우회하도록 구성되어 있고 위험에 처한 경우.

포인트 투 포인트 VPN이 더 안전한 옵션 일 수있는 위의 몇 가지 제안에 동의합니다. 다시 한 번, 보안 관점에서 보안 정책을 실제로 우회하는 이유와 액세스를 위해 서버를 dmz 또는 백본에 넣을 수없는 이유를 알고 싶습니다. 나만. 행운을 빕니다.


2
네트워크 관리자와 항상 대화 할 수있는 것은 아니며 네트워크 관리자가 항상 합리적인 것은 아닙니다.
Jeremy Bicha

예를 들어, 카페에 앉아 WiFi에 연결되어 있지만 관리자 액세스가 제한되어 있고 (지금도 연결해야하는 경우).
old-ufo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.