종료 코드 6으로 인해 sshpass가 실패했습니다.

종료 코드 6으로 인해 sshpass가 실패했습니다.

내 설정은 다음과 같습니다.

  • 노드 A는 내가 시작하는 곳이다
  • 노드 B는 게이트웨이 시스템입니다.
  • 노드 C는 목적지입니다.

From Ato에서 BSSH 공개키 인증을 설정했는데, Bfrom to에서 C그렇게 할 수 없습니다.

따라서 노드에서 A다음 주문을 사용하고 실제로 다른 컴퓨터(Ubuntu 14.04)에서 작동합니다.

sshpass -p secretpass ssh -oProxyCommand="ssh -W %h:%p username@B" username@C

...그러나 다른 컴퓨터(Ubuntu 16.04 - 관련성이 있는지 의심스럽기는 하지만)를 사용하여 다른 위치에서 시도하면 호출은 sshpass어떤 종류의 출력도 없이 즉시 반환되고 종료 코드(에서 얻음 echo $?)는 6입니다.

더욱 당황스러운 점은 이러한 단계를 개별적으로 수행하면 성공한다는 것입니다.

A: $ ssh username@B   (directly access B without being prompted for password)
B: $ ssh username@C   (prompted for password, provided 'secretpass')
C: $                  (reached my destination)

답변1

좋아요, 무엇이 문제인지 알겠습니다. 이 컴퓨터에서 이 스크립트를 처음 사용하므로 먼저 다음을 수행해야 합니다( 없이 sshpass).

ssh -oProxyCommand="ssh -W %h:%p username@B" username@C

그런 다음 메시지가 표시되었습니다.

호스트 'C <프록시 명령에 대한 호스트 IP 없음>)'의 신뢰성을 확인할 수 없습니다.

RSA 키 지문은 SHA256:…입니다.

계속 연결하시겠습니까(Y/N)? 예

경고: 'C'(RSA)가 알려진 호스트 목록에 영구적으로 추가되었습니다.

...위 내용을 수락한 후에는 추가 질문 없이 질문에서 요청한 주문을 사용할 수 있었습니다.

따라서 이 실패는 주문이 한 번만 나타나는 진위 여부 프롬프트에 응답할 수 없기 때문입니다.

sshpass매뉴얼 페이지(반환 값 섹션)에서:

다른 프로그램과 마찬가지로 sshpass는 성공 시 0을 반환합니다. 실패하면 다음 반환 코드가 사용됩니다.
[...]
6 호스트 공개 키를 알 수 없습니다. sshpass는 새 키를 확인하지 않고 종료됩니다.

답변2

처음에 지문을 승인하지 않고 작동하게 하려면 다음을 사용할 수 있습니다.

ssh ... -o "StrictHostKeyChecking=no"

관련 정보