SSH 인증에는 프록시가 필요합니다

SSH 인증에는 프록시가 필요합니다

우리 회사에는 확실히 기업 대리인이 있습니다. 회사 네트워크 외부의 일부 컴퓨터에 SSH를 통해 연결해야 합니다. 그러나 프록시에는 인증이 필요합니다.

다음과 같은 변수가 있다고 가정해 보겠습니다.

proxy_user="<username I need to authenticate at the proxy>"
proxy_pass="<password I need to authenticate at the proxy>"
proxy_serv="<hostname of the proxy>"
proxy_port=<port of the proxy>
ssh_user="<remote username I need to login on the ssh-machine>"
ssh_serv="<remote password I need to login on the ssh-machine>"
ssh_port=<ssh-port>

환경 변수 http_proxy 및 https_proxy가 다음과 같이 설정된 경우 wget과 같은 도구가 제대로 작동합니다(원격 서버에는 web_server도 설치되어 있음).

$ export env http_proxy="http://$proxy_user:$proxy_pass@$proxy_serv:$proxy_port"

$ wget $ssh_serv
Connecting to <proxy_serv>... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

그러나 SSH를 사용하면 작동하지 않습니다.

$ ssh $ssh_user@$ssh_server:$ssh_port
ssh: Could not resolve hostname <ssh_server>:<ssh_port> Temporary failure in name resolution

인터넷 검색 후 ssh에 "ProxyCommand"가 필요하다는 것을 알았습니다. 여기서는 "nc" 사용을 더 이상 권장하지 않습니다. "ssh -W"를 사용해야 합니다. 그런데 인증이 필요한 예를 찾을 수 없습니다. 나는 이전에 시도했습니다:

ssh -o "ProxyCommand='ssh -W %h:%p $proxy_user:$proxy_pass@$proxy_serv:$proxy_port'" $ssh_user@$ssh_serv:$ssh_port

어딘가에 뭔가 빠진 것 같은데 (설명서나 Google에서) 좋은 팁을 찾을 수 없습니다.

여러분 중 일부가 나를 도울 수 있기를 바랍니다.

답변1

이제 몇 시간의 인터넷 검색 끝에 "오프너"의 도움으로 마침내 작동하게 되었습니다. 내 SSH 서버는 현재 포트 443에서 실행 중입니다(포트 22에서도 실행될 수 있는지 아직 확인하지 않았습니다).

~/.ssh/config

Host <my.ssh.server>
    ProxyCommand corkscrew <my.companies.proxy> <proxy.port> %h %p ~/corkscrew-auth

~/.corkscrew-auth

<proxies.username>:<proxies.password>

이제 다음을 통해 내 서버에 연결할 수 있습니다.

ssh <remote.user>@<my.ssh.server> -p 443

답변2

단지 테스트용입니다. 사용을 고려해 보셨나요 nc? 프록시 명령을 작동시키려고 할 때 일반적으로 구성 수준에서 이 작업을 수행합니다./root/.ssh/config

예를 들어 구성에는 다음과 같은 내용이 포함됩니다.

Host ssh.example.com
    ProxyCommand ssh [email protected] nc %h %p

이는 ssh.example.com에 연결할 때마다 아래 ProxyCommand를 사용한다는 의미입니다. 한 번 시도해 보시길 권합니다. netcat 유틸리티를 전혀 사용할 수 없다면 해결 방법을 찾을 수 있을 거라 확신합니다.

답변3

이것이 내 해결책입니다.

먼저 Debian/Ubuntu/Mint 패키지를 설치하세요:

apt-get install connect-proxy

인증을 통해 프록시 뒤에서 작업하는 경우 자격 증명을 내보냅니다.

HTTP_PROXY_USER= 내보내기<사용자>
HTTP_PROXY_PASSWORD= 내보내기<비밀번호>

SSH 구성 파일에 액세스 /etc/ssh/ssh_config하고 원격 호스트 포트를 설정합니다.

Port 443

연결 손실을 방지하려면 서버 활동 간격을 설정하세요.

ServerAliveInterval 20

가장 최근에 설치된 연결 패키지를 사용하도록 ProxyCommand를 설정합니다.

ProxyCommand 연결-H<에이전트>:<포트>%생명 가치

SSH 구성 파일을 닫으면 SSH 연결을 수행할 수 있습니다.

ssh -N -D 로컬호스트:1080<원격 사용자>@<원격 호스트>

Firefox를 열고 소켓 5만 사용하도록 네트워크 설정을 구성하세요.

호스트: localhost포트:1080

너무 활성화되었습니다 Proxy DNS when using SOCKS v5.

마지막으로 Firefox 검색 탭에 다음을 입력하세요.

about:config

을 찾아 network.proxy.allow_hijacking_localhost설정합니다 true.

이제 프록시 뒤에 연결하고 Firefox를 사용하여 생성된 터널 뒤를 탐색할 준비가 되었습니다.

관련 정보