현재 서버에 SSH로 연결할 수 있지만 이를 통해서만 프록시할 수 있는 사용자 그룹을 설정하려고 합니다. 파일을 볼 수도 없고 명령을 실행할 수도 없습니다. 이 그룹의 사용자는 키 대신 비밀번호 인증을 사용할 수도 있습니다. SSH 서버는 OpenSSH입니다.
이것은비슷한 문제를 해결하는 또 다른 질문좋은 대답이 있습니다. 나는 그가 의미하는 바를 잘 이해할 수 없습니다. 특히 사용자는 서버를 프록시로 사용할 수 없으므로 지침을 맹목적으로 따를 수 없다고 명시하고 있습니다. 또한 그룹에 비해 개인 사용자를 위해 작성되었습니다. 이 문제를 해결하기 위해 구성을 다음과 같이 변경했습니다 sshd_config
.
Match Group limited-users
AllowTcpForwarding yes
#X11Forwarding no
#PermitTunnel no
#GatewayPorts no
AllowAgentForwarding no
PermitOpen localhost:1080
ForceCommand echo 'This account can only be used for [reason]'
특정 유형의 시스템 그룹을 생성해야 할 수도 있지만 확실하지는 않습니다.
제가 놓친 것과 같은 잠긴 계정을 만드는 데 선호되는 방법이 있나요?
편집 : 나는StackOverflow에서 이 질문과 매우 유사한 두 번째 질문을 찾았습니다.하지만 제가 키 대신 비밀번호를 사용하고 싶기 때문에 그들은 다시 키를 사용합니다.
편집 2: 이것은 매우 인기 있는 것으로 입증되었습니다.이것이 가장 도움이 됩니다. 단순히 아무 키나 눌러 로그아웃하도록 사용자 쉘을 설정하면 되며 사용자는 아무것도 할 수 없게 됩니다.
편집 3: 세심한 주의를 기울일 때이 기사다른 질문 중 하나에서 제공한 대로 다음과 같은 결과를 얻었는데, 이는 거의 동일하지만 두 개의 별도 그룹이 없습니다.
맞다면 업데이트하겠습니다.
/usr/bin/tunnel_shell
파일을 생성해서 넣어서 전혀 쓸모없어 보이는 쉘을 만들었습니다.
#!/bin/bash
trap '' 2 20 24
clear
echo -e "rn33[32mSSH tunnel started, shell disabled by the system administrator"
while [ true ] ; do
sleep 1000
done
exit 0
다음을 사용하여 Tunnel_group이라는 그룹을 만들었습니다.
groupadd tunnel_group
이를 사용하여 Tunnel_user라는 사용자를 추가했습니다. -M은 그에게 홈 디렉토리를 제공하지 않습니다. -Gtunnel_group은 그를 Tunnel_group(이전에 만든 그룹)에 추가합니다. -s는 그의 쉘을 이전에 생성한 Tunnel_shell 파일로 설정합니다.
useradd -M -G tunnel_group -s /usr/bin/tunnel_shell tunnel_user
그런 다음 다음을 사용하여 사용자 비밀번호를 설정했습니다.
passwd tunnel_user
/etc/ssh/sshd_config/
파일 끝에 추가했습니다 .
Match Group tunnel_group
AllowTcpForwarding yes
#X11Forwarding no
PermitTunnel yes
GatewayPorts yes
AllowAgentForwarding yes
PermitOpen localhost: 1080
ForceCommand echo 'This account can only be used for SOCKS and has be restricted accordingly.'