2013-10-03 8 views
16

여기에 내가 실제로 무엇을하고 있는지 전혀 알 수 없으므로 나를 도울 수 있다면 마음에 두십시오!프록시를 통해 SSH에 연결하십시오

것은 내가 프록시를 통해 내 가상 서버에 연결하려고하지만 연결할 수 없습니다, 그냥 달려 있습니다. 나는 이것이 우리 프록시를 통과하지 못하기 때문이라고 가정하고 있습니다.

나는 집에서 똑같은 것을 시도했으며 완벽하게 작동합니다. 나는 터미널을 사용하여 OSX를 실행 중이다. 내가 SSH와 프록시를 통해 얻을 수있는 방법

사람은 나 조언을 할 수 있습니까? 당신의 SSH 프록시 연결이 자주 사용하는 것입니다 경우

+0

현재 프록시를 통해 연결을 시도하고 있습니까? –

+2

ServerFault 또는 SuperUser에서이 질문을해야합니다. 또한 더 나은 응답을 얻을 수 있습니다. –

+1

대답을 받아주세요 – Lupocci

답변

13

, 당신은 매개 변수로 각 시간을 전달할 필요가 없습니다. 당신이 사용을

ssh foobar.example.com 

소스를 연결하는 ~/.ssh/config

다음
Host foobar.example.com 
    ProxyCommand   nc -X connect -x proxyhost:proxyport %h %p 
    ServerAliveInterval 10 

에 다음 줄을 추가 할 수 있습니다

http://www.perkin.org.uk/posts/ssh-via-http-proxy-in-osx.html

+0

나는 그 일을 시도했지만 didnt 일.내가 정확히 무엇을 넣어야하는지 확신 할 수 없었지만, Host 159.23.191.23 ProxyCommand nc -x connect -x 10.3.50.01:22 % h % p ServerAliveInterval과 같은 것을 보았습니다. 그게 맞습니까? – bencarter78

+0

방금이 솔루션이 저에게 완벽하다는 것을 추가하고 싶습니다. 현재 직장에서는 HTTP 프록시를 배포하고 단순히 프록시 호스트를 IP (스키마를 추가하지 않음)로 대체하고 proxyport를이 경우에는 8080으로 대체했습니다. – Pit

+1

이 대답은 누군가에게 명령 pass는 config 파일에 이미 있거나 (정의되어있을 수 있지만) 명시 적으로 파일에 작성하지 않아야합니다. 인수를 ssh connect 명령에 전달할 수 있습니다. – erm3nda

27
여기

한 라이너로 리처드 크리스텐슨의 대답을하는 방법은, 파일 편집이 필요하지 않습니다 (대문자로 바꾼 설정은 사용자 설정으로, PROXYPORT는 자주 80입니다) :

ssh [email protected]_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p" 
당신이 OS X이 얻을 경우 당신은 https://superuser.com/a/752621/39364

을 볼뿐만 아니라, SCP에 대해 동일한 -o ... 옵션을 사용할 수 있습니다

:

nc: invalid option -- X 
Try `nc --help' for more information. 

을 당신이 실수로 사제를 사용하고 있는지 될 수있다 netcat의 버전 (which -a nc 명령 - /usr/bin/nc이 먼저 나열되어야 함을 볼 수 있음). 두 가지가 있다면 ProxyCommand=/usr/bin/nc 같은 ProxyCommand=/usr/bin/nc ...

+4

gnu-netcat에서 arch linux를 사용하고'nc : invalid option-X'가 여전히 존재합니다. 이 문제에 대한 해결책은 gnu-netcat을 openbsd-netcat으로 대체하는 것입니다. 자세한 내용은 https://pagekite.net/wiki/Howto/SshOverPageKite/#wrongnetcat을 참조하십시오. Thes 두 버전 아마 서로 충돌합니다. – Han

+1

위대한 작품이며 허용 된 대답이어야합니다. – gladed

+1

토픽이 조금 부족하지만이 연결을 통해 터널을 열 수도 있습니다 (모두 '<' and '>'을 제거하고 'localhost'는 그대로 유지하십시오). ssh -l <최종 _ 목적지 _ 사용자> -L <터널 _ 로컬 _ 포트 _ 번호> : 로컬 호스트 : <터널 _ 최종 _ 목적지> final_destination> -o "ProxyCommand = nc -X connect -x : % h % p" – Pascal

6

@rogerdpack 그것이 -X (HTTP_PROXY)와 nc.exe을 찾기 위해 정말 어렵습니다,하지만, 내가 찾은 NC가 ncat로 대체 될 수 있으며, 전체 예제는 다음과 같이

Host github.com 
    HostName github.com 
     #ProxyCommand nc -X connect -x 127.0.0.1:1080 %h %p 
     ProxyCommand ncat --proxy 127.0.0.1:1080 %h %p 
    User git 
    Port 22 
    IdentityFile D:\Users\Administrator\.ssh\github_key 
내가가는 길에 점프 호스트 또는 요새 호스트를 가지고 있기 때문에 --proxy와

및 ncat 내 경우에는 완벽한 작업

2
$ which nc 
/bin/nc 

$ rpm -qf /bin/nc 
nmap-ncat-7.40-7.fc26.x86_64 

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> %h %p" [email protected] 

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> --proxy-type <type> --proxy-auth <auth> %h %p" [email protected] 
+0

ssh -o "ProxyCommand nc --proxy % h % p"USER @ HOST –

+0

정보를 추가하는 방법은? 이게 어떻게 작동하는지? 그것은 LQP에서 보여 주었다. – fedorqui

0

을 할 수 있으며,이로 수입 된 이후 때문에이 요새 노드의 서명은 변경했다 known_hosts 파일, 나는 단지 그 항목/라인을 지울 필요가 있었다. s를 다음 파일에서 찾으십시오.

/Users/a.abdi-kelishami/.ssh/known_hosts 

위의 파일에서 요새 호스트를 참조하는 행을 삭제하십시오.

관련 문제