http 또는 https를 통해 ssh를 사용하는 방법은 무엇입니까? IP 주소를 지정하면 https로

회사 방화벽 뒤에 Linux fedora21 클라이언트 랩톱이 있으며 (http 및 https 포트는 통과하지만 ssh 22는 허용하지 않음) 집에는 자체 라우터 뒤에 Linux fedora21 서버가 있습니다. 홈 서버의 퍼블릭 IP 주소를 지정하면 https로 검색 할 수 있습니다 (홈 라우터를 구성했기 때문에)

http / s 포트를 통해 홈 서버에 ssh (원격 셸)를 사용할 수 있습니까?

라는 도구를 보았습니다 corkscrew. 도움이 되겠습니까?

opensshdhttpd홈 서버에서 실행됩니다. 다른 무엇을 구성해야합니까?



답변

가능한 것은 방화벽이 허용하는 내용에 따라 다릅니다.

방화벽이 포트 443에서 임의 트래픽을 허용하는 경우

일부 방화벽은 간단한 방법으로 포트 443에서 모든 것을 허용합니다.이 경우 홈 서버에 접근하는 가장 쉬운 방법은 포트 443에서 SSH 연결을 수신하는 것입니다. 컴퓨터가 인터넷에 직접 연결된 경우 간단히 추가 Port 443/etc/ssh/sshd_config또는 /etc/sshd_config말한다 라인 바로 아래 Port 22. 컴퓨터가 들어오는 연결을 리디렉션하는 라우터 / 방화벽 뒤에있는 경우 다음과 같은 방법으로 들어오는 연결을 포트 443에 대한 서버의 포트 22로 리디렉션합니다.

iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22

wan0라우터의 WAN 인터페이스는 어디에 있고 홈 네트워크의 서버 IP 주소는 10.1.2.3입니다.

홈 서버가 포트 443에서 HTTPS 연결과 SSH 연결을 모두 청취 할 수있게하려면 SSH와 HTTPS 트래픽을 쉽게 구별 할 수 있습니다 (SSH에서는 서버가 먼저 대화하고 HTTP 및 HTTPS에서는 클라이언트가 대화합니다) 먼저). 이를 설정하는 방법에 대한 자습서는 http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.htmlhttp://wrouesnel.github.io/articles/Setting%20up%20sshttp/ 를 참조하십시오. 최대 sshttp , 또한 되세요 SSH 포트 80 또는 443에서 웹 서버 (의 nginx)는 이러한 포트에서 실행되는 동안

CONNECT 터널링을 허용하는 웹 프록시가있는 경우

일부 방화벽은 모든 나가는 연결을 차단하지만 프록시를 통해 웹을 탐색하여 HTTPCONNECT 방법으로 방화벽의 구멍을 효과적으로 뚫을 수 있습니다. CONNECT위 등의 포트 443에서 듣고이 결합해야 할 수 있도록 방법은 특정 포트로 제한 될 수 있습니다.

SSH가 프록시를 통과하게하려면 corkscrew 와 같은 도구를 사용할 수 있습니다 . 당신으로 ~/.ssh/config하는 추가 ProxyCommand웹 프록시 인 경우, 아래와 같은 라인을 http://web-proxy.work.example.com:3128:

Host home
HostName mmm.dyndns.example.net
ProxyCommand corkscrew web-proxy.work.example.com 3128 %h %p

HTTP (S)에서 SSH 랩핑

일부 방화벽은 포트 443에서도 SSH 트래픽을 허용하지 않습니다. 이러한 방화벽에 대처하려면 방화벽이 통과 할 수있는 것으로 SSH를 위장하거나 터널링해야합니다. proxytunnel로이 를 수행하는 방법에 대한 자습서는 http://dag.wiee.rs/howto/ssh-http-tunneling/ 을 참조 하십시오 .


답변

다른 방법으로 시도하고 웹 서버를 설정하면 서버를 ssh 할 수 있습니다.

https://github.com/huashengdun/webssh


답변

동일한 포트 443에서 HTTPS 서버와 SSHd 서버를 모두 실행하려는 경우 sslh 를 사용할 수 있습니다 .