SSH 키 비밀번호를 적용 하시겠습니까?


9

SSH의 비밀번호 기반 로그인을 제거하려고합니다. 그러나 암호가없는 ssh 키를 허용하고 싶지 않습니다.

비밀번호가있는 SSH 키만 연결할 수 있도록하려면 어떻게해야합니까?

이를 수행 할 수 없다면 SSH 키 생성을 중앙에서 관리하고 사용자가 자신의 키를 생성 및 / 또는 사용하지 못하게하는 등의 대안이 있습니까? PKI와 같은 것이 있다고 생각합니다.

답변:


20

개인 키에 설정할 수있는 암호 는 SSH 서버 또는 연결 과 관련없습니다 . 개인 키에 암호를 설정하는 것은 개인 키를 도난 당했을 경우 제 3자가 자신의 원격 셸에 액세스하지 못하도록 키 소유자가 취할 수있는 보안 조치 일뿐입니다.

안타깝게도 사용자가 암호를 사용하여 개인 키를 보호하도록 강요 할 수 없습니다. 때로는 원격 SSH 서버에 대한 액세스를 자동화하기 위해 보호되지 않은 개인 키가 필요합니다. 내가 한 가지 좋은 습관 이 높은 추천 등의 경우에는에 사용자를 조언하는 것입니다 해시 에서 known_hosts의 (에 저장된 파일 ~ / 스푸핑 /에서 known_hosts 다음 명령을 사용하여, 사용자 커넥트에 원격 호스트에 대한 정보를 유지) :

ssh-keygen -H -f ~/.ssh/known_hosts

이렇게하면 타사가 보호되지 않은 개인 키에 액세스 할 수 있어도이 키가 유효한 원격 호스트를 찾기가 매우 어려울 수 있습니다. 물론,이 기술이 어떤 가치를 가지려면 쉘 히스토리를 지우는 것이 필수적입니다.

또한 항상 명심해야 할 또 다른 사항은 SSH 서버 구성 (sshd_config)에 다음을 추가하여 root가 원격으로 로그인 할 수 없도록하는 것입니다.

PermitRootLogin no

반면에 사용자가 키를 사용하여 인증하는 대신 암호를 사용하지 못하게하려면 sshd_config에 다음을 추가해야합니다 .

PasswordAuthentication yes
PubkeyAuthentication no

8

불가능합니다.

사용자는 키 파일을 사용하여 무엇이든 할 수 있으며, 예를 들어 키 파일을 생성 한 경우에도 비밀번호가없는 파일로 변환 할 수 있습니다.


3

당신은 할 수 없습니다. 사용자가 키 데이터를 소유 한 후에는 암호를 제거하지 못하게 할 수 없습니다. 인증을 수행하는 다른 방법을 찾아야합니다.


2

사용자 키를 제어하려면 모든 키를 루트 소유 디렉토리로 이동해야합니다.이 디렉토리는 키를 읽을 수 있지만 최종 사용자가 수정할 수는 없습니다. sshd_config를 업데이트하여 수행 할 수 있습니다.

키 파일이 제어 된 위치에 있으면 키를 필요한 호스트로 배포 한 다음 업데이트하고 암호 정책을 시행하기위한 관리 인터페이스가 필요합니다. 스스로 롤업하거나 FoxT / Tectia 등과 같은 제품을 살펴보십시오.


... 공개 키의 장점을 깨는
Patwie

0

한 가지 완화 방법은 Google 인증 자 PAM 모듈 플러그인을 사용하는 것입니다. 일반적으로 공식 패키지 내에서 제공됩니다.

이렇게하면 스마트 폰에서 6 자리 코드를 통해 2FA를 사용할 수 있습니다.

지침 : Ubuntu 16.04에서 SSH에 대한 다중 요소 인증을 설정하는 방법


1
이것은 질문에 직접 대답 하지는 않지만 (좋은) 대안입니다.
ceejayoz

1
@ceejayoz 당신이 맞아요. 답변의 시작 부분에 "한 가지 완화 방법을 사용하는 것이 좋습니다."라는 문구를 추가했습니다.
바질

-1

간단하게, SSH 클라이언트 또는 SSH 에이전트가 원래 개인 키가 암호화되었는지 여부를 알리기 위해 플래그를보고 / 설정하도록 SSH 프로토콜을 확장하기 만합니다. 키가 암호화 될 때 개인 키의 암호를 입력하라는 메시지가 표시됩니다.

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