새 서버를 설정하기 위해 무인 쉘 스크립트를 작성 중입니다. 이 작업을 여러 번 실행할 수 있으므로 비밀번호 없는 SSH 액세스가 설정되었는지 확인하고 싶습니다. 이와 같은 명령
ssh newhost.example.com /bin/true
액세스가 존재하면 성공적으로 종료되지만, 액세스가 존재하지 않으면 비밀번호를 기다리는 동안 정지됩니다.
비밀번호 없는 액세스가 설정되지 않은 경우 해당 명령이 빨리 실패하도록 해당 명령에 대한 비밀번호 액세스 가능성을 끄는 방법이 있습니까?
답변1
이 옵션을 끌 수 있습니다 PasswordAuthentication
:
ssh -o PasswordAuthentication=no newhost.example.com /bin/true
255
비밀번호 없는 액세스가 거부되면 비밀번호를 묻는 메시지가 표시되지 않고 신속하게 종료 코드가 반환됩니다.
답변2
ssh
공개 키 인증만 사용하고 싶다고 알리려면 다음을 사용하세요.PreferredAuthentications
구성 옵션.
인터렉티브:
ssh -o PreferredAuthentications=publickey newhost.example.com /bin/true
또는 ~/.ssh/config
파일에서:
# or Host *.example.com, or Host *
Host newhost.example.com
PreferredAuthentications=publickey
답변3
여전히 상호 작용 문제가 발생할 ssh -o PasswordAuthentication=no newhost.example.com /bin/true
수 있습니다.
$ ssh -o PasswordAuthentication=no newhost.example.com /bin/true
The authenticity of host 'newhost.example.com (a.b.c.d)' can't be established.
ECDSA key fingerprint is SHA256:<fingerprint>.
Are you sure you want to continue connecting (yes/no)?
IMHO, 더 나은 옵션은 BatchMode에서 ssh를 실행하는 것입니다.
$ ssh -o BatchMode=yes newhost.example.com /bin/true
Host key verification failed.
$ echo $?
255
SSH 비밀번호 없는 로그인이 구성되어 실행 중인 경우 SSH는 지문을 확인할 필요가 없으며 실행 중인 것으로 표시됩니다.