본문 바로가기
컴퓨터 활용(한글, 오피스 등)/기타

jenkins에서 "build.xml: com.jcraft.jsch.JSchException: SSH_MSG_DISCONNECT 2 Too many authentication failusers" 오류 해결 방법은?

by 3604 2025. 10. 1.
728x90
 
 
오류 핵심
Jenkins가 Ant/Gradle-scp/sshexec 등으로 대상 서버에 “연결 시도 횟수 > MaxAuthTries” 만큼
키·PW·키보드인터랙티브 등을 빠르게 여러 번 보내 리눅스 sshd가 끊어 버린 것입니다.
(“failusers”는 “failures”의 타이포/줄임)

  1. Jenkins 쪽(공급자) 조치 – 무조건 먼저 실행
    1. credential이 “Username + Private key” 하나만 남기기
      • Jenkins > 해당 Job > Build Environment / Publish over SSH / SSH Agent
        → 고급 > “Use password authentication, …” 체크 해제
        → Key 파일·텍스트에 OpenSSH 형식 개인키 넣기 (-----BEGIN OPENSSH PRIVATE KEY-----)
    2. 키 passphrase가 있으면 Jenkins credential에도 동일 passphrase 등록
    3. “SSH Agent” 플러그인 사용 시 “Global credentials”에 등록한 키만 선택
    4. “Retry / Try 3 times” 같은 옵션 꺼두기 (빌드 반복 시도 → MaxAuthTries 소모)
  2. 대상 서버(sshd) 쪽 확인
    bash
    Copy
    sudo grep MaxAuthTries /etc/ssh/sshd_config   # 기본 6
    sudo grep -E 'PubkeyAuthentication|PasswordAuthentication' /etc/ssh/sshd_config
    • MaxAuthTries 6 이하면 10 정도로 늘려도 되지만, 근본은 Jenkins가 한 번에 성공하는 것
    • PubkeyAuthentication yes / PasswordAuthentication no 권장 (키 실수 줄임)
  3. 수동 테스트 – Jenkins 에이전트(또는 마스터)에서
    bash
    Copy
    # 동일 계정으로
    ssh -i /var/jenkins_home/.ssh/id_rsa -o IdentitiesOnly=yes jenkins@target
    # “Too many auth failures” 없이 바로 접속 되어야 함
    실패하면 authorized_keys 권한 확인(700/600) 혹은 키 불일치
  4. 빌드 스크립트 최소화 build.xml의 scp/sshexec 태그에
    xml
    Copy
    keyfile="${user.home}/.ssh/id_rsa"
    passphrase="xxx"
    trust="true"
    한 줄만 남기고 username/password 속성은 제거
  5. 그래도 계속 실패 시
    • Jenkins > Manage > System > Publish over SSH > 고급
      “Verbose output in console” 체크 → 어떤 인증 방법이 쓰이는지 확인
    • sshd 로그(/var/log/secure, /var/log/auth.log)에서 “userauth failure” 횟수 확인
    • Jenkins 에이전트 컨테이너에 ssh-agent 데몬이 돌면서 불필요한 키 5~6개 로드돼 있을 수 있음
      → ssh-add -D 로 전체 삭제 후 필요한 키 1개만 재등록

요약
Jenkins credential을 “키 하나”로 단순화 → 비밀번호/키보드인터랙티브 옵션 제거 →
build.xml(또는 pipeline)에서도 키 파일만 지정
하면
“Too many authentication failures”는 99 % 해결됩니다.
728x90