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