클라이언트 측에서 SSH 비밀번호 확인을 비활성화할 수 있나요?

클라이언트 측에서 SSH 비밀번호 확인을 비활성화할 수 있나요?

SSH 서버에 연결 중이지만 SSHD 구성을 완전히 제어할 수 없습니다. 서버는 공개 키 인증과 비밀번호 인증을 허용하지만 SSH를 차단하고 싶습니다.고객공개키 인증에 실패하더라도 비밀번호 인증으로 전환되지 않습니다.

PasswordAuthentication no서버 항목에 추가를 시도했지만 ~/.ssh/config눈에 띄는 효과가 없었습니다.

가능합니까?

나는 이것이 추가적인 보안을 제공하지 않는다는 것을 이해합니다. 일부 앱이 비밀번호를 기다리는 동안 멈추는 것을 방지하기 위해 사용자 경험 목적으로 이 작업을 수행합니다.

답변1

ssh배치 모드에 있는 경우 다음 메시지가 표시되지 않습니다.

ssh -oBatchMode=yes you@theotherhost command

당신은 설정할 수 있습니다

alias ssh /usr/bin/ssh -oBatchMode=yes

귀하의 경우 .bashrc대화형 세션에 대한 클라이언트 비밀번호 인증이 비활성화됩니다. (당신이 하지 않는 한 /us/bin/ssh)

보다 자세한 해결책은 다음과 같습니다.

  • /usr/local/bin전에 확인 PATH하세요/usr/bin
  • 파일 만들기 /usr/local/bin/ssh:
#!/bin/bash
/usr/bin/ssh $*
  • chmod a+rx /usr/local/bin/ssh

그러나 이 중 어느 것도 완벽하지는 않습니다.

답변2

클라이언트 명령 또는 ~/.ssh/config:

여기서 솔루션에 대한 몇 가지 가능성을 찾을 수 있습니다.

현재 SSH 연결 시도에 대한 비밀번호 인증을 비활성화합니다.

현재 SSH 연결 시도에 대한 비밀번호 인증을 비활성화하려면 명령줄에서 이 옵션을 전달합니다. -o PasswordAuthentication=no

모든 호스트에 대한 향후 모든 연결에 대해 비밀번호 인증을 비활성화하려면 ~/.ssh/config에 다음을 추가하십시오. PasswordAuthentication no

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

SSH 클라이언트의 비밀번호 프롬프트를 비활성화하는 방법은 무엇입니까?

이를 수행하는 표준 방법은 BatchMode 옵션을 사용하는 것입니다.

ssh -o BatchMode=yes …

원격/서버 측 /etc/ssh/sshd_config:

비밀번호를 사용하고 싶지 않다면 /etc/ssh/sshd_config원격 컴퓨터에서 변경할 수 있습니다.PasswordAuthentication no

sshd_config 원격 시스템의 일부 일반 설정:

PermitRootLogin no          # No root login
PasswordAuthentication no   # No password login
PermitEmptyPasswords no     # No empty password
PubkeyAuthentication yes    # login with public key

편집 후 서비스를 다시 시작하세요

관련 정보