암호 인증이 아닌 공개 키 SSH 인증을 위해 계정을 잠금 해제하는 방법은 무엇입니까?


32

계정이 잠겨 있기 때문에 ssh에서 로그인 할 수 없습니다. ssh를 통한 공개 키 권한 부여를 위해 서버에서 사용자의 잠금을 해제하고 싶지만 비밀번호로 로그인 할 수는 없습니다.

난 노력 했어:

# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.

인증 로그 항목 :

Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]

당신 (IMHO) 모든 사용자를 위해 이것을 해야 합니다 ... 전체 sshd를 위해 그것을 할 때 간단한 구성
Skaperen

passwd -u나쁜 생각입니다. Giles bellow의 답변을 참조하십시오.
피터 젠킨스

답변:


15

@Skaperen이 제안한대로 계정을 잠금 해제하고 사용자에게 복잡한 암호를 제공하십시오.

다음 사항을 편집 /etc/ssh/sshd_config하고 확인하십시오.

PasswordAuthentication no

줄에 주석이 없는지 확인하고 ( #시작 부분에) 파일을 저장하십시오. 마지막으로 sshd서비스를 다시 시작하십시오 .

이렇게하기 전에 공개 키 인증이 먼저 작동하는지 확인하십시오.

한 명의 (또는 소수의) 사용자에 대해서만이 작업을 수행해야하는 경우 PasswordAuthentication활성화 된 상태로두고 대신 다음을 사용하십시오 Match User.

Match User miro, alice, bob
    PasswordAuthentication no

다음 Match명령 또는 EOF 까지 유효하므로 파일의 맨 아래에 배치하십시오 .

당신은 또한 사용 Match Group <group name>하거나 부정 할 수 있습니다Match User !bloggs

주석에서 언급했듯이 구성의 주요 부분에서 비밀번호 인증을 사용하지 않도록 설정하고 Match명령문을 사용하여 몇 명의 사용자 가 사용하도록 설정할 수도 있습니다 .

PasswordAuthentication no
.
.
.
Match <lame user>
    PasswordAuthentication yes

Miro가 번만 사용하기 위해 비밀번호를 비활성화하려고한다는 인상을 받았습니다 . 그러나 내 이전 의견을 참조하십시오
Skaperen

@Skaperen-당신이 잘 할 수 있습니다. 내 답변을 약간 변경했습니다.
garethTheRed

Match구문은 좋아 보이지만 반대로 시도해 볼 것입니다. (라임이 거의없는) 사용자에 대해 비밀번호로 로그인 할 수 있습니다.
kravemir

@Miro-좋은 생각입니다. 나중에 참조 할 수 있도록 답변에 추가했습니다.
garethTheRed

37

무엇을 하든지 passwd -u빈 비밀번호 필드를 사용 하여 계정을 남겨둔 상태로 두지 마십시오. 그러면 비밀번호를 입력하지 않고 로그인 할 수 있습니다 (SSH가 거부하기 때문에 SSH를 제외하고).

비밀번호가 없지만 계정 잠금을 해제하도록 계정을 변경하십시오. 비밀번호 데이터베이스의 비밀번호 해시가 문자열의 해시가 아닌 경우 계정에 비밀번호가 없습니다. 전통적으로, 같은 한 문자열 *또는 !그 사용됩니다.

잠긴 계정은 또한 비밀번호 필드에 특수 마커를 사용하여 문자열이 문자열의 해시가되지 않도록합니다. 마커는 시스템에 따라 다릅니다. Linux passwd에서이 명령 !은 시작 부분에를 입력하여 잠긴 암호를 표시 하고 필드가로 시작하면 OpenSSH는 계정을 잠긴 것으로 간주합니다 !. 다른 유닉스 변종은 비슷하지만 동일하지 않은 메커니즘을 사용하는 경향이 있으므로 암호 데이터베이스가 이기종 네트워크간에 공유되는지주의하십시오.

Linux에서 SSH 액세스 (일부 다른 인증 방법, 일반적으로 키 페어 사용)를 허용하면서 계정에 대한 비밀번호 기반 액세스를 비활성화 할 수 있습니다.

usermod -p '*' username

사용자는 유효한 비밀번호를 입력해야하므로 계정을 다시 비밀번호로 변경할 수 없습니다.

원하는 경우 계정에 비밀번호가 있는지 여부에 관계없이 비밀번호 인증을 거부하도록 SSH를 구성 할 수 있습니다. 계정이 잠기지 않도록 SSH를 정렬해야합니다. 예를 들어 Linux의 !경우 비밀번호 필드에서 비밀번호 를 제거해야 하지만 필드를 비워 두지 마십시오. *위에서 설명한대로 설정하십시오. ). SSH에 대한 비밀번호 인증을 사용하지 않으려면 또는 시스템에 PasswordAuthentication지시문을 추가 하십시오. 해당 지시문을 특정 사용자에게만 적용하려면 블록을 사용하십시오 . 블록이 나타나야합니다/etc/sshd_config/etc/ssh/sshd_configMatchMatch

…
Match User username
    PasswordAuthentication no

6
고마워- usermod -p '*' username매력을 일했다!
Homme Zwaagstra

1
OpenSSHd에서는로 설정된 사용자 (예 : !접두사가있는 비밀번호 해시 ) 가로 UsePAM yes설정된 경우 다른 인증 방법으로 로그인 할 수 있습니다 sshd_config. 이것은 대부분의 배포판 (예 : Fedora)에서 기본값입니다.
maxschlepzig

1
PAM이없는 임베디드 시스템이 있으므로 '*''!'구별이 매우 유용합니다.
jpkotta

8

비밀번호를 활성화하거나 설정할 필요가 없으며 이미 강력한 키를 사용하고 있다면 비밀번호를 사용하지 않아야합니다. 기존 세션에서 계정 (sudo passwd -l username)을 다시 잠그고 SSH 구성을 수정하십시오.

이것이 발생한 이유는 아마도 / etc / ssh / sshd_config에서 기본 SSH 데몬 설정 중 하나를 편집했기 때문일 수 있습니다.

/ etc / ssh / sshd_config에서 이것을 변경하고 SSH를 다시 ​​시작하십시오.

UsePAM yes

일반적으로 PAM을 비활성화해야 할 충분한 이유가 없으면 PAM을 활성화 된 상태로 유지하는 것이 좋습니다. SSH 내에서 PAM을 활성화하면 암호를 제거한 경우에도 여전히 로그인 할 수 있습니다. 당신이 무엇을하든, 빈 암호 또는 이와 유사한 것을 설정하지 마십시오 ... 암호 필드를 잠그는 것이 전체 계정을 잠그는 것을 의미하지는 않습니다.

SSH를 망칠 때의 빠른 팁 : SSH 구성을 변경할 때마다 다른 창을 다른 창에서 열어 둔 채로 로그인 할 수 있는지 테스트하십시오. 실수로 액세스를 중단 한 경우 현재 세션을 사용하여 수정하십시오.

(면책 조항 : SSH 키 관리 소프트웨어를 제공하는 Userify에서 일합니다.)


0

CentOS 7에서이 문제가 발생했습니다. 저는 데비안 기반의 일반 Linux 사용자이므로 물에서 물고기가되었습니다. 일부 서버에서는 작동했지만 하나는 작동하지 않는 것으로 나타났습니다. audit.log는 유용한 정보가 없으며 secure.log도 아무 것도주지 않았습니다. 실제로 유일한 차이점은 작동하는 파일과 그렇지 않은 파일 사이의 파일과 디렉토리에 대한 보안 컨텍스트 차이라는 것입니다. 보안 성 확보

sudo ls -laZ <user-home>/.ssh

디렉토리의 (sshd_config에 많은 기본값이 있다고 가정합니다).

일부 ssh_home_tuser_home_t속성 이 표시되어야 합니다. 그렇지 않으면 chcon명령을 사용 하여 누락 된 속성을 추가하십시오.

예를 들어

home="$(getent passwd <user> | cut -d: -f6)"
sudo chcon -R unconfined_u:object_r:ssh_home_t:s0 "$home".ssh
sudo chcon unconfined_u:object_r:user_home_t:s0 "$home"

제 경우에는 사용자가 비표준 방식으로 생성되었다는 의심이 있습니다. 그의 집은의 디렉토리였습니다 /var/lib.

자세한 정보 : https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/


-2

계정 잠금을 해제하고 암호를 임의의 문자열로 변경하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.