PuTTY가 있고 셸이 없는 제한된 사용자를 위한 SSH 터널

PuTTY가 있고 셸이 없는 제한된 사용자를 위한 SSH 터널

그래서 나는 내부 사이트나 공개 사이트의 일부에 대한 액세스를 제한하기 위해 SSH 터널을 사용해 왔으며 관리자만이 SSH 액세스 권한을 갖고 있었기 때문에 루트가 아닌 표준/Sudo 사용자 계정을 사용해 왔습니다. 이제 저는 프로젝트를 확장하기 위해 지역 대학의 학생들을 확장하고 참여시키려고 노력하고 있으므로 학생들은 이러한 내부 페이지 중 일부에 액세스하기 시작해야 합니다.

프록시 서버는 SELinux가 활성화된 CentOS 6.4 상자이며 프록시 외에 다른 서비스를 실행하지 않습니다. 결국 전체 VPN을 설정하려고 하는데 이 경우 전체 내부 네트워크 액세스가 아닌 IP 화이트리스트를 사용하여 특정 시스템에 대한 액세스를 허용하는 것뿐입니다.

나는 /bin/false 등과 같은 사용자 계정을 사용하여 SOCKS 프록시를 설정하는 모든 방법을 살펴보았습니다.

A) 단일 포트 또는 호스트만 전달된다고 가정합니다(반면 이 경우에는 네트워킹 구성에서 필요에 따라 변경되는 VPS 인스턴스 세트가 있습니다).

B) PuTTY와 같은 것보다는 일반 SSH 클라이언트가 사용 중입니다(모든 학생들에게 VM을 사용하거나 Linux를 직접 설치하도록 강요하고 싶지만 학교에서 엔지니어링에 PuTTY를 사용하기 때문에 이는 옵션이 아닙니다). 학생용 하드웨어).

지금까지 제가 찾은 내용은 다음과 같습니다. 일반 SSH 클라이언트를 사용하는 경우 사용자 셸을 /bin/false로 설정할 수 있으며 사용자는 SOCKS 프록시를 설정할 때 -N 명령을 지정할 수 있지만 불행하게도 PuTTY 사용자에게는 이 명령이 적용됩니다. 작동하지 않는 것 같습니다(적어도 작동하도록 할 수는 없습니다).

PuTTY가 기본 터널링 옵션을 통해 터널을 열 때 사용자에게 /bin/false 셸이 있으므로 로그인 시 즉시 연결이 끊어지는 셸을 열어야 합니다. SSH 설정에서 "no shell or command" 인수를 지정하면 프록시 옵션이 설정되지 않는 것 같습니다. 원격 명령에 대한 SSH 옵션에서 프록시를 설정하려고 하면 옵션에서 셸이나 다른 명령을 허용하지 않으면 여전히 실행되지 않습니다.

관련 질문을 찾았지만 적합하지 않습니다.

PuTTY 및 nologin을 사용하여 SOCKS 터널 생성 (이것은 기술적으로 작동하지만 쉘은 매우 오랜 시간 동안 실행되는 절전 명령일 뿐이므로 이스케이프될까 봐 걱정됩니다. 보안상의 이유로 단순히 중단되는 쉘보다 진정한 noshell을 사용하는 것이 좋습니다. )

https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding (이것은 사용자가 ssh의 실제 설치를 사용해야 하고 PuTTY와 같은 프로그램이 작동하지 않기 때문에 작동하지 않습니다.) 또한 웹페이지에 액세스하려면 이러한 포트가 필요하지만 특정 포트만 허용하는 대신 계정에 대해 PermitTunnel을 간단히 지정할 수 있다고 가정합니다.

SSH 프록시 사용자를 위한 "noshell" (이것은 PuTTY가 SOCKS 프록시를 설정하기 위해 명령을 활성화해야 하는 필요성과 관련하여 위에서 언급한 이유로 PuTTY에서는 작동하지 않습니다.)

어떤 제안이 있으십니까? 나는 쉽게 뭔가를 놓칠 수 있지만 확실하지 않습니다.

-짐

답변1

나는 해결책을 찾았습니다 (nologin 또는 noshell과 같은 태그를 사용하지 않고 Windows 사용자를위한 아주 간단한 트릭이지만 쉘 없이도 작동하도록 만들었습니다).

PuTTY의 기본 설치를 실행하고 셸 연결을 끊는 명령을 실행하지 않고 터널을 설정할 수 있는 이 게시물의 답변을 사용하여 배치 스크립트를 만들었습니다.

내 Windows 사용자를 위한 죽은 단순 SSH 터널

"C:\Program Files (x86)\PuTTY\plink.exe" -v -N -D localhost:8080 proxy@remote_host

이제 PuTTY를 사용하는 Windows 사용자가 터널에 액세스할 수 있으므로 계정 셸을 /bin/false로 계속 사용할 수 있습니다.

비슷한 상황에 처해 있는 분들을 위해 스레드를 해결하기 위해 여기에 게시했습니다. 다른 해결책이 있다면 듣고 싶습니다!

이제 모든 시스템에 구현하고 있는 SSH 푸시 기반 2단계 시스템을 사용하여 이 작업을 수행해야 하지만 이는 다른 모든 작업이 완료된 후에 수행해야 할 작업입니다.

-짐

답변2

방금 PuTTY에 다음과 같은 옵션이 있으며 이것이 여러분이 찾고 있는 것일 수도 있다는 것을 확인했습니다. 연결->SSH->셸이나 명령을 시작하지 마세요

활성화되면 연결이 이루어지고 콘솔에 더 이상 표시되지 않지만 활성화된 상태로 유지되며 터널이 제대로 작동합니다. 도움이 되길 바랍니다.

관련 정보