2012-09-14 7 views
2

"ssh"이외의 다른 것을 ssh 프로그램으로 사용할 수 있습니까? Rsync는이 목적을 위해 -e 옵션을 가지고 있으며 rsh 또는 ssh가 전송으로 사용될 수있는 다른 인터페이스를 가지고 있습니다. 내가 가지고있는 특별한 유스 케이스는 요새 호스트를 통해 ssh 연결을 연결하는 것입니다. 왜냐하면 내가 복제/풀링하는 호스트에 대한 직접적인 ssh 액세스가 방화벽에 의해 허용되지 않기 때문입니다."ssh"이외의 ssh (rsh) 전송을 사용하는 방법

내가 지금까지 생각해 낸 최선의 해결책은 "ssh"라는 단일 실행 파일로 디렉토리를 만들고 그 디렉토리를 내 PATH의 시작 부분에 놓는 것입니다. "ssh"파일의 내용은 다음과 같습니다.

#!/bin/sh 
# If we were being clever we'd look at where we were and just snip that 
# off the path. 
export PATH=/bin:/usr/bin:/sbin:/usr/sbin 
exec ssh bastion.example.org ssh "[email protected]" 

이 방법은 효과가 있지만 여러 가지 단점이 있습니다.

GIT_SSH 환경 변수는 스크립트를 작성하고 참조해야하므로 나중에 수행하지 않습니다. rysnc의 -e 옵션이있는 반면에 내가 대신 다른 프로그램을 사용하여 자식을 구성하는 노력의

rsync -e 'ssh -K bastion.example.org ssh' ... 

답변

2

을 수행 할 수 있습니다, 당신은 ssh를 자체를 구성 할 수 있습니다

~/.ssh/config 파일에서 새 Host 섹션을 추가

Host git.example.org 
    Username myusername 
    ProxyCommand ssh bastion.example.org "nc git.example.org 22" 

그런 다음 리모컨을 "git.example.org"호스트로 지정하기 만하면됩니다. 또한

, 당신은 OpenSSH를> = 5.4을 사용하는 서버에 netcat을에 대한 종속성을 원하지 않는 경우, 당신이 사용할 수있는 SSH의 netcat mode 대신 :

Host git.example.org 
    Username myusername 
    ProxyCommand ssh bastion.example.org -W "git.example.org:22" 
관련 문제