Development3 min read

자동화 SSH의 비밀번호·호스트 키 확인 대기 막기: BatchMode=yes 설정

2026년 11월 9일3 min read작성자 Flature

SSH에 BatchMode=yes를 지정하면 비밀번호 입력과 호스트 키 확인 같은 대화형 요청을 비활성화합니다. 명령행과 호스트별 설정 예제로 적용하고, 입력 없이 접속할 준비가 부족할 때 발생하는 실패를 구분하는 방법을 설명합니다.

자동화 SSH의 비밀번호·호스트 키 확인 대기 막기: BatchMode=yes 설정

자동화 작업에서 SSH가 비밀번호나 호스트 키 확인 입력을 기다리지 않게 하려면 ssh -o BatchMode=yes로 실행합니다. 이 설정은 대화형 요청을 비활성화하므로, 사용자 입력 없이는 인증하거나 호스트 키를 확인할 수 없는 접속은 실패할 수 있습니다.

BatchMode가 자동화에 필요한 이유

예약 작업이나 배포 스크립트에는 SSH의 질문에 답할 사람이 없습니다. BatchMode의 기본값은 no이며, yes로 설정하면 비밀번호 입력과 호스트 키 확인 요청 같은 사용자 상호작용을 비활성화합니다.

따라서 자동화에서는 접속에 필요한 인증 수단과 호스트 신뢰 정보를 미리 준비하고, 준비가 부족한 경우에는 실패를 처리하는 흐름을 구성해야 합니다. BatchMode=yes 자체가 인증을 준비하거나 호스트 키를 자동 승인해 주지는 않습니다.

명령행 또는 호스트별 설정에 적용하기

한 번의 실행에 적용하려면 다음처럼 옵션을 지정합니다. OpenSSH 클라이언트가 필요하며, 예시의 사용자와 호스트 이름은 실제 접속 대상으로 바꿉니다.

ssh -o BatchMode=yes deploy@app.example.com 'echo ready'

반복 사용하는 대상이라면 자동화 작업을 실행하는 로컬 사용자의 ~/.ssh/config에 다음 설정을 둘 수 있습니다.

Host app.example.com
    BatchMode yes

이후 해당 사용자로 ssh deploy@app.example.com 'echo ready'를 실행하면 일치하는 호스트 설정이 적용됩니다. 명령행 옵션은 사용자 설정 파일과 시스템 설정 파일보다 먼저 읽히므로, 스크립트 실행 시 명시적으로 적용하려면 -o BatchMode=yes를 사용할 수 있습니다.

접속 예제의 성공과 실패 해석하기

위 예제는 원격에서 echo ready를 실행하는 간단한 확인용 명령입니다. 실행 전에는 다음 조건을 준비합니다.

  • 대상 서버와 계정에 접속할 수 있어야 합니다.
  • 자동화 실행 환경에서 사용자 입력 없이 사용할 수 있는 인증 수단이 있어야 합니다.
  • 대상 호스트 키가 신뢰할 수 있는 정보인지 미리 검증하고, 적용 중인 호스트 키 정책에 따라 확인 요청 없이 접속할 수 있도록 준비해야 합니다.
예상되는 관찰 해석과 다음 확인
원격 명령이 실행되어 ready가 출력됨 해당 실행에서는 사용자 입력 없이 접속과 명령 실행이 가능했다는 뜻입니다.
비밀번호를 묻지 않고 인증 실패로 종료됨 입력 없이 사용할 수 있는 인증 수단이 대상 계정에서 허용되는지 확인합니다.
호스트 키 확인 관련 오류로 종료됨 확인 요청을 받을 수 없는 상태입니다. 대상 호스트의 신뢰 정보와 적용 중인 호스트 키 정책을 점검합니다.
연결 단계에서 계속 기다림 대화형 입력 외의 대기일 수 있습니다. 네트워크 연결과 초기 SSH 연결 단계의 문제를 구분해야 합니다.

수동 접속은 되지만 자동화에서 실패한다면, 먼저 두 실행의 로컬 사용자와 인증 환경이 같은지 확인합니다. 특히 사용자 설정 파일은 자동화 작업을 실행하는 계정의 파일을 기준으로 확인해야 합니다. 실패했다는 사실만으로 인증 문제나 호스트 키 문제라고 단정하지 말고 SSH의 오류 메시지와 대조합니다.

입력 대기 차단과 실행 시간 제한은 구분하기

BatchMode=yes는 모든 종류의 대기를 없애는 설정이 아닙니다. 연결 시간도 제한해야 한다면 별도로 ConnectTimeout을 지정할 수 있습니다.

ssh -o BatchMode=yes -o ConnectTimeout=10 deploy@app.example.com 'echo ready'

여기서 ConnectTimeout=10은 서버 연결 수립과 초기 SSH 프로토콜 핸드셰이크 및 키 교환에 적용되는 제한 시간입니다. 원격 명령 전체를 10초 안에 종료시키는 설정은 아닙니다. 또한 BatchMode가 원격에서 실행한 프로그램의 입력 요청까지 없애 주는 것으로 해석해서는 안 됩니다.

자동화에는 BatchMode=yes를 명시하고, 실패 시 오류 메시지를 보존해 인증 준비와 호스트 신뢰 정보를 각각 점검하세요. 접속 실패를 처리하는 절차까지 갖춰야 입력을 기다리지 않는 SSH 작업을 운영할 수 있습니다.

참고한 공식 문서

이어서 확인할 내용