SSH 구성: ProxyCommand를 대체합니까?

SSH 구성: ProxyCommand를 대체합니까?

내 도움으로 ProxyCommand사용하기 쉽도록 SSH 즐겨찾기를 설정했습니다.

host some_server
    hostname some_server
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ProxyCommand ssh frontserver1 -W %h:%p

host frontserver1
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa

오늘은 frontserver1가동 중지 시간이 많지만 또는 frontserver2을 통해 연결할 수도 있습니다 frontserver3. 하지만 모든 것을 재설정해야 합니다 some_server_via_front2. 결과적으로 액세스하려는 각 인트라넷 서버에 대해 n개의 항목이 생성됩니다. 여기서 n은 프런트 엔드 서버의 수입니다.

더 쉬운 방법이 있나요?

대안을 설정할 수 있나요 ProxyCommand?

다음과 같습니다. ProxyCommand ssh frontserver1 -W %h:%p연결할 수 없으면 계속 ProxyCommand ssh frontserver2 -W %h:%p하세요 frontserver3.

답변1

ssh_config설명서에 나와 있는 내용을 고려하면 다음과 같습니다 .

 ProxyCommand
         Specifies the command to use to connect to the server.  The com-
         mand string extends to the end of the line, and is executed using
         the user's shell `exec' directive to avoid a lingering shell
         process.

쉘의 논리 OR 연산자를 사용할 수 있어야 합니다.

host some_server
    hostname some_server
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ProxyCommand ssh frontserver1 -W %h:%p || ssh frontserver2 -W %h:%p || ssh frontserver3 -W %h:%p

host frontserver1
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

host frontserver2
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

host frontserver3
    hostname frontserver1.url.tld
    port 22
    user some_user
    IdentityFile /home/user/.ssh/id_rsa
    ConnectTimeout 5

ConnectTimeout나는 목록의 세 번째 호스트를 통과하지 못하는 데 최대 15초가 걸리도록 각 프록시 호스트에 지시어를 자유롭게 추가했습니다.N호스트 수에 호스트의 기본 TCP 시간 초과 설정을 곱합니다.

관련 정보