키를 사용하는 SSH 인라인 프록시 점프가 작동하지 않습니다.

키를 사용하는 SSH 인라인 프록시 점프가 작동하지 않습니다.

프록시 점프를 통해 원격 서버에 연결해야 합니다. 이를 위해 -J 플래그를 사용하려고 합니다. 구문이 다음과 같다는 것을 이해합니다.

ssh -J A B

하지만 두 연결 모두에 키 파일을 사용해야 합니다. 그래서 나는 이것을 시도했습니다 :

ssh -J -i /path/proxy.pem user@proxy_host -i /path/target.pem user@target_host

분명히 작동하지 않습니다.

option requires an argument -- i
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
ssh_exchange_identification: Connection closed by remote host

이 경우 SSH 설정을 편집하지 않고 올바른 인라인 구문은 무엇입니까? 이 경우 키가 어느 서버에 저장되어 있는지에는 차이가 없습니다.

답변1

구문이 다음과 같다는 것을 이해합니다.

ssh -J A B

예, 하지만 그게 전부는 아닙니다. -J는 독립 실행형 플래그가 아닙니다. 단순히 동일한 명령줄에 두 개의 독립적인 연결 옵션 세트를 지정하도록 허용하는 것은 아닙니다.

대신 -J플래그는 중간 호스트의 이름을 사용합니다.매개변수로, 그러니 -i <keyfile>늘 함께 가듯, -J <proxy>남아도 함께 있어야 합니다.

그리고 이 옵션을 사용하더라도 전체 'ssh' 구문은 변경되지 않습니다. 어떤 옵션이 호스트 A에 속하고 어떤 옵션이 호스트 B에 속하는지 그룹화되지 않습니다. 이와 같은 '-i' 옵션이 두 개 있으면 SSH 그냥 시도해 볼게둘 다두 개의 연결을 각각 만들 때 키.

그러나 후자는 문제가 되지 않습니다. 각 서버는 키를 수락하지 않는다는 것을 나타내고 SSH는 다른 서버를 시도하기 때문입니다. 따라서 다음이 작동합니다.

ssh -J user@proxy_host -i /path/proxy.pem -i /path/target.pem user@target_host
    └────────────────┘ └────────────────┘ └─────────────────┘

그러나 호스트 중 하나가 여러 키가 시도된다는 사실을 좋아하지 않는 경우 -J를 긴 형식의 ProxyCommand로 변환해야 합니다.

ssh -o ProxyCommand="ssh -i /path/proxy.pem -W %h:%p user@proxy_host" -i /path/target.pem user@target_host

관련 정보