클라이언트의 SSH 연결을 허용하여 해당 컴퓨터에 다시 연결할 수 있도록 Ubuntu 서버를 설정 중입니다(역방향 SSH 터널). 클라이언트가 서버에서 어떤 작업도 수행하지 못하도록 비활성화하는 방법을 검색하고 다른 솔루션을 찾았지만 다음을 추가하여 서버의 특정 클라이언트에 대해 Authorized_key를 구성하는 것만큼 간단한 방법은 없었습니다.
command="sleep x seconds"
이 솔루션을 좋지 않게 만드는 중요한 것을 놓치고 있습니까?
답변1
여러 사용자에 대한 제한이 있는 경우 해당 사용자 그룹에 제한을 적용하도록 Match
차단을 설정합니다 . /etc/sshd_config
특정 SSH 키에 대한 제한이 있는 경우 제안한 경로로 이동하고 파일에서 명령을 차단하는 것을 고려할 것입니다 ~/.ssh/authorized_keys
.
Match
예방하다/etc/sshd_config
설명서를 읽고 Match
연결 하위 ssh
시스템 (예: .
# Add users to the UNIX group "restrictedusers"
Match Group restrictedusers
AllowTCPForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand echo No logins permitted
유형~/.ssh/authorized_keys
command
기존 또는 새 키 항목에 액세스 제어 옵션을 추가하면 X11Forwarding, 프록시 전달 등을 적용하거나 비활성화할 수 있습니다. 파일 변경 사항을 되돌리거나 조정하려면 원격 시스템에 로그인할 수 있는지 확인하세요.
restrict,port-forwarding,command="echo No logins permitted" ssh-ed25519 ed25519-public-key-code-goes-here...
두 경우 모두 호출자는 역방향 콜백이 설정되면 이를 설정해야 합니다. 예를 들어 다음은 로컬 포트를 remoteHost
연결합니다 .50123/tcp
123/tcp
ssh -fN -R 50123:localhost:123 remoteHost
무엇보다도 ~/.ssh/config
호출자의 for 에서 이 모든 것이 준비 될 수 있으므로 콜백 remoteHost
만 시작하면 됩니다 .ssh remoteHost
Host remoteHost
ForkAfterAuthentication yes
SessionType none
# listenPort targetHost:targetPort
RemoteForward 50123 localhost:123