SSH 액세스를 localhost로만 제한하는 방법은 무엇입니까?

SSH 액세스를 localhost로만 제한하는 방법은 무엇입니까?

특정 사용자(localhost 제외)에 대해 SSH 액세스를 비활성화해야 합니다.

그래서. ssh localhost작동해야합니다. ssh hostname해당 사용자에게는 외부에서 오는 것이 작동하지 않아야 합니다.

다른 모든 사용자는 평소대로 작업해야 합니다.

답변1

AllowUsersDenyUsers참고하세요sshd_config매뉴얼 페이지(또한 될 수 있습니다 AllowGroupsDenyGroups).

user@host기본적으로 이러한 지시문은 공백으로 구분된 형식으로 사용자 모드 목록을 가져옵니다. 명령어에는 DenyUsers, AllowUsers, DenyGroups마지막으로 의 우선순위가 있습니다 AllowGroups.

의 특정 사용자만 허용하는 간단한 경우에는 localhost다음 줄을 추가하면 됩니다.

AllowUsers user@localhost

이는 에서 요청하지 않은 모든 요청을 암시적으로 거부합니다 user@localhost.

답변2

특정 사용자에게 공개 키 인증을 강제한 다음 인증 키 파일의 옵션을 사용하여 공개 키를 제한하면 from=어떻게 되나요 ?

특정 사용자가 공개 키 인증을 사용하도록 하려면 다음을 수행하세요.

Match User Bad_User
    PasswordAuthentication no
    AuthorizedKeysFile /somewhere/the/user/cannot/touch

그런 다음 인증 키 파일에서 해당 키를 다음과 같이 구성합니다.

from=localhost ssh-rsa AAAA...

Match의 지시문 man sshd_config과 인증 키 옵션에 대한 자세한 내용을 읽을 수 있습니다 man sshd.

답변3

PAM(sshd_config에서 UsePAM)을 사용하고 추가할 수 있습니다.

account  required     pam_access.so

SSH에 대한 PAM 구성.

그런 다음 다음에서 액세스 정책을 정의할 수 있습니다./etc/security/access.conf

+ : john : 127.0.0.1 ::1
- : john : ALL
+ : ALL : ALL

(테스트되지 않음)

답변4

이 사용자에 대한 TCP 전달을 제한하려면 다음 규칙을 사용하여 파일( sshd_config일반적으로 위치) 에서 이를 구성할 수도 있습니다 ./etc/ssh/sshd_configMatch

Match User <username>
  AllowTcpForwarding no
Match User <username> Address *,!127.0.0.1,!::1
  ForceCommand /bin/false

이렇게 하면 지정된 사용자 이름을 가진 사용자가 SSH를 통해 로그인할 때마다 로컬 호스트(예: IP 주소 127.0.01 또는 ::1)가 아닌 경우 시스템이 실행되어 /bin/false유용한 항목을 실행하는 대신 오류 코드를 반환하게 됩니다. 지옥.

~처럼루디 메이어 지적-N, 사용자가 초기 SSH 연결을 열고 포트를 localhost로 전달하고 명령(예: OpenSSH의 매개변수 사용 -L)을 실행하지 않은 다음 해당 터널을 통해 후속 SSH 연결을 여는 것을 방지하려면 포트 전달을 비활성화해야 합니다. localhost 호스트이므로 허용됩니다.

관련 정보