우리 회사에는 확실히 기업 대리인이 있습니다. 회사 네트워크 외부의 일부 컴퓨터에 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를 사용하여 생성된 터널 뒤를 탐색할 준비가 되었습니다.