내 도움으로 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 시간 초과 설정을 곱합니다.