SSH의 공개 키 인증을 설정 한 후에 사용자의 비밀번호를 삭제해야합니까?


19

SSH에는 공개 키를 사용하는 것이 가장 좋습니다. 그래서 내 sshd_config있다 PasswordAuthentication no.

일부 사용자는 로그인하지 않습니다 (예 : shell sftp 사용자) /usr/sbin/nologin. 또는 시스템 계정.

암호를 사용하지 않고 같은 사용자를 만들 수 있습니다 adduser gary --shell /usr/sbin/nologin --disabled-password.

좋은 생각입니까? 내가 고려하지 않은 파급 효과가 있습니까?


3
실제 사용자 계정이 아니거나 sudo액세스 권한이없는 경우 (sudo 권한이 없거나 sudo 권한이있는 경우 NOPASSWD) 선택한 답이 적합해야합니다. sudo 문제를 포함하기 위해 해당 답변에 대한 수정 사항을 제출했지만 그 동안 여기에 전화하겠다고 생각했습니다.
Doktor J

답변:


35

서버에 대한 루트 액세스 권한이 있고 사용자가 잃어버린 경우에 대비하여 SSH 키를 재생성 할 수있는 경우

사용자 (개인)가 여러 사용자 계정을 가지고 있지 않으며 SSH 세션의 사용자 계정 을 전환해야한다고 확신합니다 ( 필요한 경우 여러 SSH 세션을 열 수도 있음 )

서버에 대한 "실제"(키보드 + 모니터 또는 VM의 원격 콘솔을 통해) 필요 하지 않습니다.

비밀번호 게이팅 sudo액세스 권한 이있는 사용자가 없습니다 (예 : sudo 액세스 권한이 없거나으로 sudo 액세스 권한이있는 사용자 NOPASSWD)

나는 당신이 좋을 것 같아요.

이와 같이 구성된 많은 서버가 있습니다 (일부 계정 만 vmware 원격 콘솔을 통해 VM에 액세스해야하고, 다른 계정은 pubkey auth가있는 SSH를 통해서만 연결됨).


9
또한 "사용자가 개인 SSH 키가없는 원격 시스템에서 시스템에 액세스 할 필요 가 없다는 것을 알고 있습니다"라고 덧붙입니다. 그리고 "당신은 생각하지 못한 상황에 처한 사용자들을 기꺼이 처리 할 것입니다."
Andrew Henle

7
첫 번째 조건은 IMO가 필요하지 않습니다. 사용자는 자신의 키를 직접 만들어야합니다. 공개 키는 사용자에게 공개 키를 부여하기 만하면됩니다. 키를 잃어버린 경우 다른 키를 생성하기 만하면 서버에서 이전 키를 교체하게됩니다.
Christophe Drevet-Droguet

1
@AndrewHenle 좋은 지적이지만 sshd PasswordAuthentication no에 다른 문제가있는 경우 (사용자는 로그인 할 수 없음).
lonix September

1
"절대"는 너무 오랜 시간입니다. 필요한 경우 관리자가 비밀번호 인증을 쉽게 다시 추가 할 수 있습니다.
hyde

2
문제는 특정 서비스 또는 sftp 전용 사용자가 사용하는 시스템 계정과 같이 로그인하지 않는 계정과 관련이 있습니다. 이 질문은 또한 사용자에게 로그인 쉘이 없다는 것을 나타냅니다. 이러한 유형의 사용자의 경우 비밀번호를 통한 로그인을 명시 적으로 비활성화하는 것이 좋습니다.
Christian Gawron

27

이 질문은 원래 passwd --delete <username> 안전하지 않은 것을 언급 했습니다. 암호화 된 암호 필드는 /etc/shadow완전히 비어 있습니다.

username::...

sshd비밀번호 인증을 거부 하도록 구성한 경우 SSH를 사용하면 안전합니다 ... 그러나 시스템의 다른 서비스가 비밀번호 인증을 사용하고 널 비밀번호를 거부하도록 구성되지 않은 경우 비밀번호없이 액세스 할 수 있습니다! 당신은 이것을 원하지 않습니다.


adduser --disabled-passwd/etc/shadow암호화 된 비밀번호 필드가 별표 인 항목 을 생성합니다 . 즉

username:*:...

이것은 "성공적으로 입력 할 수없는 암호화 된 암호"입니다. 즉, 계정이 유효하고 기술적으로 로그인이 가능하지만 암호로 인증 할 수 없습니다 . 따라서 서버에 다른 비밀번호 인증 기반 서비스가 있으면이 사용자는 차단됩니다.

이 시스템에서 시스템 비밀번호 파일을 사용하는 모든 서비스에 대해서는 표준 사용자 비밀번호 (예 : SSH 키) 이외의 것을 사용하는 인증 방법 만이 사용자에게 적용됩니다. SSH 키로 만 로그인 할 수있는 사용자가 필요한 경우 이것이 원하는 것입니다.

기존 계정을이 상태로 설정해야하는 경우 다음 명령을 사용할 수 있습니다.

echo 'username:*' | chpasswd -e

암호화 된 비밀번호 필드에는 세 번째 특수 값 adduser --disabled-login이 있습니다.이 필드에는 느낌표 하나만 포함됩니다.

username:!:...

별표와 마찬가지로 암호 인증에 성공하지 못하지만 또 다른 의미가 있습니다. 일부 관리 도구에서는 암호를 "잠금"으로 표시합니다. passwd -l기존 암호 해시 앞에 느낌표를 붙여서 암호 인증을 사용할 수 없게하는 것과 거의 동일한 효과를 나타냅니다.

그러나 2008 년에 passwd이전 shadow패키지 에서 제공되는 명령 버전이 passwd -l"계정 잠금"에서 "암호 잠금"으로 다시 정의 되도록 변경되었습니다 . 명시된 이유는 "다른 암호 버전과의 호환성"때문입니다.

당신이 (나처럼) 오래 전에 이것을 배웠다면, 그것은 굉장한 놀라움으로 올 수 있습니다. adduser(8)아직이 차이를 인식 하지 못하는 문제에는 도움이되지 않습니다 .

모든 인증 방법에 대해 계정 을 비활성화하는 부분 은 실제로 계정 에 만료 날짜 값을 1로 설정하는 것 usermod --expiredate 1 <username>입니다. 2008 년 이전 에는 암호 앞에 느낌표 붙는 것 외에이 작업을 수행하는 데 사용 passwd -lshadow소스 키트 에서 비롯 되었지만 더 이상 그렇게하지 않습니다.

데비안 패키지 변경 내역 :

  • debian / patches / 494_passwd_lock-no_account_lock : passwd -l의 이전 동작을 복원합니다 (# 389183에서 변경됨). 사용자 계정이 아닌 사용자의 비밀번호 만 잠급니다. 차이점을 명시 적으로 문서화하십시오. 이는 이전 버전의 passwd 및 다른 구현에서 공통적 인 동작을 복원합니다. 마감 : # 492307

데비안 버그 492307버그 389183에 대한 버그 이력은 이것에 대한 사고를 이해하는데 도움이 될 수 있습니다.


경고 주셔서 감사합니다 ... 아무도 그 실수를하지 않도록 질문을 편집거야!
lonix September

내가 사용하는 경우에도 경고가 적용 adduser --disabled-passwd되므로 다른 서비스에서 비밀번호 인증을 허용하는 경우 사용자가 비밀번호없이 로그인 할 수 있습니까?
lonix September

1
아니요, adduser --disabled-password특히 해당 계정에서 비밀번호 인증을 수행 할 수 없습니다.
telcoM

암호를 삭제하는 것은 무해한 것처럼 보이지만 너무 위험 *하므로 사용에 관한 단락으로 암호를 바꾸는 것이 좋습니다 .
Captain Man

1
와우, 그것은 일어나기를 기다리는 끔찍한 놀라움입니다 ... 그리고 평소와 같이, 그것을 비난해야 할 호환성 문제가 있습니다. 그것은 passwd2008 년 에 소스 코드에 등장했습니다 . 한 번 배운 다음 의존했던 것이 더 이상 그렇지 않을 때 그것을 좋아하지 않습니까?
telcoM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.