공개 키 인증에 실패한 경우 비밀번호를 묻는 메시지 대신 ssh가 실패하도록하려면


107

공개 키 인증을 사용하는 여러 서버를 ssh하는 스크립트가 있습니다. 서버 중 하나에서 구성 문제로 인해 스크립트에 로그인하지 못하게되었습니다. 즉, 스크립트에 "Password :"프롬프트가 표시되어 응답 할 수 없으므로 나머지 서버도 시도하지 않습니다. 목록에서.

키 인증에 실패한 경우 ssh 클라이언트에 비밀번호를 묻지 말고 대신 연결 오류를보고하고 스크립트를 계속 수행하도록 지시하는 방법이 있습니까?

답변:


138

OpenSSH에는 암호 프롬프트를 비활성화하는 것 외에도 BatchMode가 있으며 키에 대한 암호 구문 쿼리를 비활성화해야합니다.

배치 모드

"yes"로 설정하면 암호 / 암호 쿼리가 비활성화됩니다. 이 옵션은 비밀번호를 제공 할 사용자가없는 스크립트 및 기타 배치 작업에 유용합니다. 인수는 "예"또는 "아니오"여야합니다. 기본값은 "아니오"입니다.

샘플 사용법 :

ssh -oBatchMode=yes -l <user> <host> <dostuff>

이것은 나를 위해 공개 키 인증을 비활성화했습니다. 그러나 ssh user @ host -C somecommand로 지정했습니다. 나를 위해 일한 것은 단지ssh user@host -oPreferredAuthentications=publickey -C 'echo success'
AB 캐롤

20

에 다음을 추가하십시오 ~/.ssh/config.

PasswordAuthentication no

서버에서 비밀번호 인증을 비활성화하려면 동일한 행을 추가 /etc/ssh/sshd_config하고 다시 시작하십시오 sshd.


7
모든 ssh 클라이언트 연결에 대해 비밀번호 인증을 사용하지 않으려면 명령 행에서 옵션을 지정할 수도 있습니다. ssh 명령에 '-oPasswordAuthentication = no'를 추가하십시오.
cas

7
암호 프롬프트가 표시되지 않습니다. OP의 스크립트는 여전히 정지됩니다.
Joshua Swink

11

dropbear를 사용하는 경우 " -s"옵션을 추가하여 비밀번호 인증을 비활성화하십시오.


4
클라이언트가 openssh라고 가정하지 않은 경우 +1 :-)
cas

8

명령 줄 (또는 ~/.ssh/config)에서 설정할 수 있습니다 PreferredAuthentications.

PreferredAuthentications=publickey

커맨드 라인에서 옵션을 따옴표로 묶은 다음 -o 옵션으로 전달해야한다고 생각합니다.
Craig Walker

3
@CraigWalker 또한 그대로 전달할 수도 있습니다.ssh -o PreferredAuthentications=publickey
Tobias Kienzler

@CraigWalker 공백을 사용하여 옵션과 값을 구분하려면 따옴표가 필요합니다.ssh "-oPreferredAuthentications publickey"
Timo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.