다음에서 호스트 별 구성을 수행 할 수 있습니다 .ssh/config
.
Host ex1
HostName proxied.example.com
User myuser
ProxyCommand /usr/local/bin/corkscrew proxy.example.com 8080 %h %p
Host ex2
HostName nonproxy.example.com
User myuser
IdentityFile id_rsa
그래서
ssh ex1
proxied.example.com
코르크 마개로 ssh 하고 호출합니다.
ssh ex2
폴더 nonproxy.example.com
에서 ssh 하고 ID 파일을 사용 .ssh
합니다.
자동 감지
코르크 프록시가 수행하는 작업은 로컬 프록시를 통해 연결을 작성하고 ssh가 연결하기 위해 표준 입력을 허용합니다. 어떻게 든 원격 ssh 서버에 연결하고 표준 입력을 받아들이면 ProxyCommand로 무엇이든 사용할 수 있습니다.
예를 들어, netcat을 사용하여 원격 호스트에 연결하고 ssh는 표준 입력을 통해 netcat과 통신 할 수 있습니다.
ProxyCommand nc %h %p
이 프록시 명령을 사용하여 서버에 ssh를 실행하면 ssh는 nc를 호출하여 포트 22에서 원격 호스트에 tcp 연결을 설정 한 다음 ssh는 nc의 표준 입력을 통해 명령을 보냅니다.
이것은 nc가 ssh 대신 tcp 세션을 설정하도록하면 아무런 목적이 없습니다. 예를 들어 "proxytest"라는 래퍼 스크립트를 만들 수있는 경우를 제외하고는 nc를 사용하여 직접 연결을 설정하고 corkscrew를 사용하려고 시도했는지 확인하는 테스트를 수행했습니다.
if nc -z $1 $2; then
exec nc $1 $2 # try to connect directly
else
exec corkscrew $3 $4 $1 $2 # set up proxy connection
따라서 이들 중 하나가 작동하면 ssh가 netcat 또는 타래 송곳에서 연결할 수있는 표준 입력이 있습니다. 따라서 ssh 설정은 다음과 같습니다.
ProxyCommand proxytest %h %p proxy.example.com 8080
적절한 테스트 및 오류 검사와 함께 시도해 볼 수 있는 준비된 스크립트가 있습니다 . "기타 트릭"섹션으로 스크롤하십시오.