SSH에서 비밀번호를 묻는 메시지가 표시되면 스크립트 종료

SSH에서 비밀번호를 묻는 메시지가 표시되면 스크립트 종료

XYZ 서버에서 ABC 서버로 SSH를 수행해야 하는 시나리오를 구현하려고 합니다. 원활한 비밀번호 없는 로그인을 위해 공개 키가 이미 설정되어 있습니다. 이제 비밀번호를 묻는 SSH 명령을 찾으면 스크립트를 종료하고 싶습니다. 이는 공개 키가 설정되지 않았음을 의미합니다.

ssh -o ConnectTimeout=10 user@ABC <<HERE
----- doing some stuff here----
HERE

출력 -

Password:

스크립트는 XYZ에 있습니다. XYZ에서 실행하고 SSH ABC를 시도합니다. 비밀번호를 묻는 메시지가 나타나면 메시지를 인쇄하여 스크립트를 종료하세요.

답변1

노력하다

ssh -o BatchMode=yes

~에 따르면man 5 ssh_config

배치 모드

       If set to “yes”, passphrase/password querying will be disabled.
         In addition, the ServerAliveInterval option will be set to 300
         seconds by default.  This option is useful in scripts and other
         batch jobs where no user is present to supply the password, and
         where it is desirable to detect a broken network swiftly.  The
         argument must be “yes” or “no”.  The default is “no”.

답변2

PreferredAuthentications=publickey연결 문자열에 옵션을 추가합니다 .

ssh -o PreferredAuthentications=publickey -o ConnectTimeout=10 user@ABC

종료 코드는 255이며 다음 정보를 얻을 수 있습니다.

user@ABC: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

답변3

SSH 옵션에 PasswordAuthentication=no를 추가하세요.

$ ssh -o PasswordAuthentication=no host
user@host: : Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
$ echo $?
255

관련 정보