내 아파트에는 다른 곳에 있는 클라우드에서 백업을 수행하는 데 사용하는 작은 SBC가 실행되고 있습니다. 매일 밤 내 클라우드는 SFTP를 통해 SBC에 연결하고 내 데이터에 대한 새로운 백업 타임스탬프를 생성합니다.
이는 SSH 포트를 인터넷에 노출해야 함을 의미하므로 SSH 구성이 매우 안전하길 원합니다. 한 명의 특정 사용자만 로그인할 수 있으며 인증서 기반 로그인만 허용됩니다. 또한 인터넷에서 홈 네트워크로 포트 22 요청을 전달할 필요가 없도록 포트를 변경하겠습니다.
하지만 집에 있을 때 다른 계정(sudo 사용 가능)과 일반 포트 22를 사용하는 비밀번호를 사용하여 SBC에 SSH로 연결할 수 있기를 원합니다. 개인 IP 주소 블록에서 매우 구체적인 IP 주소(192.168.1.10)만 허용하고 싶습니다. 다른 곳에서 SBC에 액세스해야 하는 경우 VPN을 사용하여 라우터에 로그인하면 홈 네트워크 내에서 SBC에 연결하기 위한 올바른 로컬 IP 주소가 할당됩니다.
이제 sshd_config에서 이러한 사항을 구성하는 방법을 알고 있지만 이러한 다양한 정책을 특정 포트에 적용하는 방법은 모르겠습니다. 나는 Host 지시문을 사용할 수 있다는 것을 알고 있지만, 내가 아는 한 이는 포트가 아닌 호스트 이름에만 영향을 미칩니다.
답변1
당신은 찾고있는 것 같습니다Match
구성 항목을 조건부로 적용하기 위한 지시어입니다. 예를 들어 다음을 추가할 수 있습니다 sshd_config
.
Match LocalPort=22 Address="192.168.1.*"
PasswordAuthentication yes
AllowUsers username
비밀번호 인증을 허용하고 username
포트에 연결된 동안에만 로그인을 허용합니다.22
그리고IP 일치 호스트에서192.168.1.*
무늬.
이 예에서는 기본 구성이 더 제한적이라고 가정합니다. 즉, username
기본적으로 로그인을 허용하지 않고 비밀번호 인증을 허용하지 않습니다.
이러한 조건부 블록은 구성 파일의 맨 아래에 추가되어야 합니다. 블록은 Match
후속 명령이나 파일의 끝에서만 끝나기 때문입니다. Match
또한 순서도 중요합니다. 구성 매개변수에 대해 발견된(및 일치하는) 첫 번째 지시문이 사용됩니다.