
SFTP 서버에서 키 기반 인증과 비밀번호 기반 인증을 동시에 구현할 수 있나요? 서버가 먼저 키 기반 인증을 수행하기를 원합니다. 그리고 그것이 정확하다면 비밀번호 기반 인증을 요청하십시오. 이거 구현 가능한가요?
답변1
SFTP는 거의 항상(그러나 반드시 그런 것은 아니다) SSH를 전송으로 사용합니다. 인증은 SSH 수준에서 수행됩니다. 따라서 찾고 있는 옵션은 SSH 서버의 구성에 속합니다.
OpenSSH를 가정하고 있습니다. 보다man 5 sshd_config
[강조 내]:
AuthenticationMethods
사용자에게 액세스 권한을 부여하려면 성공적으로 완료되어야 하는 인증 방법을 지정합니다. 이 옵션 뒤에는 쉼표로 구분된 하나 이상의 인증 방법 이름 목록이 와야 하며, 단일 인증 방법을 허용하는 기본 동작을 나타내려면 단일 문자열 any가 와야 합니다. 기본값이 재정의된 경우 성공적인 인증을 위해서는 이러한 목록 중 하나 이상에 있는 모든 방법을 완료해야 합니다.
예를 들어,
publickey,password publickey,keyboard-interactive
사용자는 공개 키 인증을 완료한 후 비밀번호 또는 키보드 대화형 인증을 완료해야 합니다.하나 이상의 목록에서 다음 방법만 각 단계에서 제공되므로 이 예에서는 공개 키 이전에 비밀번호 또는 키보드 대화형 인증을 시도하는 것이 불가능합니다.[…]
(참고:password
이들 그리고 의 차이점은 무엇인가요 keyboard-interactive
?)
이 예가 정확히 당신이 원하는 것 같습니다.
설정은 SFTP뿐만 아니라 SSH의 모든 사용에도 영향을 미칩니다. AFAIK SFTP에 대해 다른 설정과 다른 설정을 쉽게 사용할 수 없습니다. 서버가 SFTP를 원한다는 것을 알기 전에 인증이 발생하기 때문입니다. 서버는 사용자를 충분히 일찍 알고 있으므로 "SFTP 전용 사용자"에 대해 이것이 필요한 경우 조건부 블록 덕분에 해당 사용자에게만 영향을 줄 수 있습니다(Match
).
구성 파일을 변경한 후에는 SSH 서버를 다시 시작하거나 구성을 다시 로드하도록 지시해야 합니다. sshd
OpenSSH에서 끊김 신호인 SIGHUP을 수신하면 구성을 다시 읽습니다.