RHEL 서버에 로그인할 수 없는 사용자에게 애플리케이션을 시작/중지하거나 서버를 다시 시작할 수 있는 기능을 제공하려면 어떻게 해야 합니까?

RHEL 서버에 로그인할 수 없는 사용자에게 애플리케이션을 시작/중지하거나 서버를 다시 시작할 수 있는 기능을 제공하려면 어떻게 해야 합니까?

우리는 소수의 사람들만이 SSH를 통해 서버에 접근할 수 있도록 보안 플랫폼을 구축하고 있지만, SSH를 통해 서버에 접근하지 않고도 애플리케이션을 시작하거나 중지하고 필요할 경우 서버를 다시 시작할 수 있도록 지원이 필요합니다.

답변1

실제 요구 사항이 지원 직원이 할 수 없는 경우명령줄에 액세스, 그런 다음 지원이 허용하는 고정 작업 메뉴를 표시하는 스크립트를 작성한 다음 chsh명령을 사용할 수 있습니다이 스크립트를 지원 계정의 로그인 셸로 설정.

좀 더 확실하게 하려면 전용 바이너리 실행 파일을 빌드하여 메뉴를 표시하고 이를 스크립트 대신 로그인 셸로 사용할 수 있습니다. 하지만 프로토타입 단계에서는 스크립트를 사용하는 것이 더 쉬울 수도 있습니다.

메뉴 스크립트/바이너리가 사용자의 로그인 셸로 사용되면 메뉴 스크립트/바이너리를 중단하여 셸에 더 이상 액세스할 수 없습니다. 메뉴 스크립트/바이너리가 종료되면어떤 이유로, 시스템에서는 이를 로그아웃으로 간주하므로 세션이 즉시 종료됩니다.

이 작업이 완료되면 계정 로그인이 지원될 때마다(로컬 및 SSH 모두) 메뉴가 나타납니다. 메뉴 종료를 시도하면 세션이 종료됩니다.


또는 sshdauthorized_keys파일을 사용하여 정의할 수 있습니다.필수 주문: 키 인증을 사용하여 SSH 세션이 시작되고 해당 키에 필수 명령이 연결되어 있을 때 sshd실행됩니다 .명령만 지정완료되면 세션이 종료됩니다.

기본적으로 사용자를 위한 SSH 키 쌍을 생성합니다 support(예 ssh-keygen -f rebootkey_ed25519 -t ed25519: 공개 키(의 내용 )rebootkey_ed25519.pub 를 접두사로 사용하여 키 행이 다음과 같이 표시되도록 합니다 .~support/.ssh/authorized_keysno-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/bin/sudo /sbin/reboot"authorized_keys

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/bin/sudo /sbin/reboot" ssh-ed25519 <public_key_alphabet_soup_here> [optional comment]

그런 다음 visudo구성을 사용하여 /etc/sudoers사용자가 비밀번호 프롬프트 유무에 관계없이 support실행할 수 있도록 허용합니다./sbin/reboot

support ALL=(root) /sbin/reboot

또는

support ALL=(root) NOPASSWD: /sbin/reboot

그런 다음 지원을 위해 개인 키 파일을 제공하고 rebootkey_ed25519서버를 다시 시작해야 하는 경우 해당 파일을 실행하도록 지시할 수 있습니다.ssh -i rebootkey_ed25519 support@hostname_or_ip

이제 rebootkey_ed25519개인 키를 사용하여 사용자로 로그인 support하면 sshd명령줄에 지정된 모든 원격 명령이 무시되고 해당 사용자로 실행됩니다 ssh. 사용된 구성 버전에 따라 사용자 비밀번호가 필요할 수도 있고 필요하지 않을 수도 있습니다. 어떤 이유로든 명령이 종료되면 SSH 세션이 종료됩니다.sudo rebootsupportsudosudosupportsudo reboot

실행하려는 각 명령에 대해 고유한 SSH 키를 사용하여 특정 명령을 사용하여 여러 SSH 키를 정의할 수 있습니다.


지원팀에서 SSH를 전혀 사용할 수 없는 경우 CGI 스크립트를 실행할 수 있는 웹 서버를 설정하고 지원팀에서 수행할 수 있도록 하려는 각 작업에 대한 스크립트를 작성할 수 있습니다( 필수 명령을 실행하는 스크립트를 사용하여 필요에 따라 사용자에게 권한 sudo부여 ). NOPASSWD:그리고 해당 스크립트에 대한 링크로 작업 메뉴를 포함하는 간단한 웹 페이지를 작성합니다.

이렇게 하려면 반드시 IP 주소로 페이지에 대한 액세스를 제한하거나 인증 + HTTPS를 요구해야 합니다.

관련 정보