대화형 세션에 도달하기 위한 SSH 연결 시간 초과

대화형 세션에 도달하기 위한 SSH 연결 시간 초과

오작동하는 SSH 서버에 연결할 때 짧은 시간 내에 대화형 콘솔에 도달하지 못할 경우 클라이언트에게 더 일찍 포기하도록 지시하는 데 사용할 수 있는 플래그 또는 구성 설정이 있습니까?

-o ConnectTimeout호스트에 연결할 수 없을 때 연결이 중단된다는 것을 알고 있습니다 . 이 경우 호스트에 도달할 수 있고 초기 연결이 빠르게 발생하지만(1초 이내에 "서버가 키를 승인함") PAM의 일부 계층이 손상되어 실제 명령 프롬프트가 3초, 12초 또는 1초 이내에 표시될 수 있습니다. 절대. Ctrl+C를 보내거나 "[호스트] 포트 22에 대한 연결 시간이 초과되었습니다"라는 메시지가 나타날 때까지 90초 동안 기다릴 때까지 연결이 중단됩니다.

근본 원인이 해결될 때까지(이 질문으로 해결하려는 것이 아님) 증상을 완화하기 위해 할 수 있는 일이 있습니까? 5초 내에 유용한 메시지가 표시되지 않으면 자동으로 연결을 끊고 싶습니다.

답변1

기본 연결이 안정적이고 주요 목표가 PAM 룰렛을 플레이하지 않고 여러 세션을 여는 것이라면 "마스터" 모드가 도움이 될 수 있습니다.

ssh -M -S /tmp/reusable.sock user@host

Ctrl+C/90초 제한 시간 싸움에서 처음으로 승리하면 다음을 사용하여 다른 터미널을 빠르게 열 수 있습니다.

ssh -S /tmp/reusable.sock user@host

이는 원래 연결이 열려 있는 한 작동합니다. 연결 시간 단축은 문제가 인증 단계에 있다고 가정합니다(이와 같이 소켓을 다중화하면 재인증을 우회하므로).

답변2

포트 전달이 설정되기 전에 연결이 중단되면 소켓을 세마포로 활용하고 자체 감시 기능을 해킹할 수 있습니다.

lfg.sh:

#!/bin/bash
set -m

function watchdog {
    sleep $1
    if [[ ! -S "/tmp/lfg.$2" ]]; then
        kill -STOP $3
    fi
}

ssh -L /tmp/lfg.$$:localhost:1234 $1 && rm -f /tmp/lfg.$$ &
watchdog $2 $$ $! &
fg %-

용법:

lfg grumpy-host 5

lfg먼저 작업 제어를 활성화한 다음 임의의 원격 포트로 전달되는 ssh로컬 소켓 요청을 시작합니다. /tmp/lfg.nnn이 작업을 백그라운드에 두고 감시 기능에 5초 동안 기다린 다음 소켓을 찾도록 요청합니다. 거기에 없으면 정지된 SSH 프로세스를 종료하십시오. fg %-ssh를 다시 전경에 놓아 대화형이 되자마자 시작됩니다. 5초 이상 걸리면 로컬 프롬프트로 돌아갑니다.

관련 정보