비밀번호를 묻지 않고 비밀번호 없는 액세스에 대해 SSH를 테스트하는 방법은 무엇입니까?

비밀번호를 묻지 않고 비밀번호 없는 액세스에 대해 SSH를 테스트하는 방법은 무엇입니까?

새 서버를 설정하기 위해 무인 쉘 스크립트를 작성 중입니다. 이 작업을 여러 번 실행할 수 있으므로 비밀번호 없는 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는 지문을 확인할 필요가 없으며 실행 중인 것으로 표시됩니다.

관련 정보