
자동화 작업에서 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 작업을 운영할 수 있습니다.