
저는 서버 간의 SSH 연결을 테스트하는 몇 가지 통합 테스트를 작성 중입니다.
당분간 테스트는 사람들의 노트북에서 실행됩니다. 사용자(테스트를 실행하는 사용자)의 작업을 방해하지 않기 위해 테스트용으로 ~/.ssh/config
맞춤화된 파일이 포함된 임시 디렉토리를 만듭니다 . ./tmp/.ssh/config
그런 다음 HOME=/path/to/tmp
. 불행하게도 openssh는 $HOME
ssh 구성 또는 ID 파일을 검색하는 데 사용되지 않는다는 것을 발견했습니다 .
플래그를 사용하여 명시적으로 구성을 설정할 수 있기 때문에 호스트에 직접 SSH로 연결하는 경우에는 괜찮습니다 -F
. 그러나 요새를 통해 SSH로 연결하고 프록시 명령이 있는 경우 ssh
해당 구성 파일을 프록시 명령으로 전달하지 않습니다. 따라서 맞춤형 SSH 구성이 다른 기본 사용자 이름(예:)을 사용하는 경우 해당 구성은 프록시 명령에 사용되지 않습니다.
프록시 명령도 "수정"할 수 있지만(ssh 구성 파일을 인수로 사용하기 위해) openssh를 사용하여 다른 위치에서 구성/신원 파일을 찾을 수 있는지 알고 싶습니다. 환경 변수(구성 파일을 각 후속 다운스트림 명령에 전달할 필요 없음). ssh-agent를 사용하여 변경할 수 있으므로 SSH_AUTH_SOCK
구성 파일 디렉터리도 변경할 수 있기를 바랐습니다.
답변1
소스 코드에 따르면 ssh
비밀번호 파일에서 홈 디렉토리를 가져온 다음, 성공하지 못하면 HOME 환경 변수에서 가져옵니다.
당신이 할 수 있는 일은 Include
모든 사용자의 에 ~/.ssh/config
을 추가하는 것입니다 ~/tmp/user/.ssh/config
.
포함할 파일이 존재하지 않으면 ssh
불평하지 않습니다. 그러나 존재하고 읽을 수 있는 경우에는 포함됩니다. 그러면 파일을 너무 많이 다루지 않고도 테스트를 수행할 수 있습니다.
보안상 위험할 수 있으니 주의하세요. 해당 경로를 아는 사람은 보안을 제대로 유지하지 않으면 다른 사용자를 위해 로컬 구성을 주입할 수 있습니다.