표준 ssh 프로그램으로 ssh 터널을 통해 https 트래픽을 터널링 할 수 있습니까?


12

ssh-tunnel을 통해 (svn 저장소의) https 트래픽을 다시 라우팅 할 수 있습니까?

문제는 다음과 같은 청취를 위해 하나의 터널을 만들면 https를 사용하는 서비스가 작동하지 않는다는 것입니다.

ssh -L 12345:server.com:443 localhost

다른 일을해야합니까? 목표는 https://PROJECT.googlecode.com/svn/ 을 터널링하는 것입니다. 여기서 PROJECT는 프로젝트 이름입니다.

답변:


12

SSH 포트 전달을 통해 HTTPS 연결을 재 지정할 수 있지만 호스트 이름이 일치하지 않는 경우 SSL / TLS 인증서 유효성 검증이 실패합니다.

https : // localhost : 12345에 연결하고 있지만 서버 인증서에 server.com이라는 이름이 포함되어 있습니다.

HTTPS 연결을 직접 전달하는 대신 SSH 연결을 여는 원격 컴퓨터에서 HTTP / sock 프록시를 실행합니다. 그런 다음 포트 전달을 통해이 프록시를 사용하도록 터널링하려는 프로그램을 설정하십시오. 이것은 깨끗한 해결책이 될 것입니다.

업데이트 : SVN은 HTTP 프록시를 사용할 수 있지만 SOCKS 프록시는 사용할 수없는 것 같습니다. 그렇게하려면 로컬 시스템에 추가 "양말"이 필요합니다. Serverfault.com : ssh tunnel을 사용하여 서브 버전 용 프록시를 설정하는 방법을 참조하십시오 .


실제로 이런 종류의 접근 방식을 사용할 수 있습니까 : dltj.org/article/ssh-as-socks-proxy ? googlecode 경우에는 로컬 컴퓨터-> 양말-컴퓨터-> googlecode가 있습니다. 그리고이 "ssh -D"는 로컬 컴퓨터에서 실행됩니다 : ssh -D 12345 [username] @ [socks-computer]. 이제 svn에게 local-computer : 12345에서 프록시를 사용하도록 지시해야합니다. 다른 것이 필요합니까?
Juha

쿨, OpenSSH에 이미 SOCKS 프록시가 포함되어 있다는 것을 몰랐습니다. 업데이트 된 답변도 참조하십시오.
Robert

6
ip 주소가 127.0.0.1 인 로컬 호스트 파일에 원격 호스트를 추가하여 HTTPS 인증서 문제를 해결할 수 있습니다. 그런 다음 실제로 remotehost : 12345 주소를 사용할 수 있지만 트래픽은 여전히 ​​SSH 터널로 보내집니다.
Juha Palomäki

@ JuhaPalomäki 당신은 이것을 답변으로 추가해야합니다
elhefe

1

SSH 터널을 사용하여 원격 서버에 액세스하는 동안 인증서 DNS 불일치 문제를 해결할 수 있도록 다음을 수행했습니다.

  1. 로컬 포트 ​​443이 트래픽을 원격 서버로 전달하도록 퍼티로 SSH 터널 구성 (L443 : <remote.server.com>:443 )
  2. C:\Windows\System32\drivers\etc\hosts파일을 업데이트 하여 다음과 같은 항목을 추가하십시오.127.0.0.1 <remote.server.com>
  3. HTTP 프록시 서버를 사용중인 경우 (예 : 회사 프록시에서 작업중인 경우) <remote.server.com>시스템 프록시 에서 호스트 를 무시하십시오.
  4. 이제 당신은 원격 서버 URL에 액세스 할 수 있습니다 https://<remote.server.com>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.