"시스템 사용자"를 위한 비밀번호 없는 SSH, 로그인 셸 필요 없음

"시스템 사용자"를 위한 비밀번호 없는 SSH, 로그인 셸 필요 없음

나는 오늘 RSA를 사용하여 ssh를 조작하고 비밀번호나 로그인 없이 시스템 사용자 계정을 생성하는 등 많은 것을 배웠습니다. 내가 하고 싶은 것은 홈 디렉토리를 가진 사용자를 생성하는 것입니다.~/.ssh/ 필수및 비밀번호(초기 SSH 설정에 필요)

하지만 제대로 설정하지 못하는 것 같습니다.

나는 사용하는 것을 안다

ssh-keygen
ssh-copy-id user@remotehost

RSA의 경우 이는 간단합니다.

사용자를 생성하는 방법을 알고 있습니다.

useradd -r newuser

또는

adduser newuser --system --shell=/bin/false
passwd newuser
passwd -d newuser
  • 최종 목표

    셸이 없는 사용자이거나 적어도 원격 시스템에서 로그인할 수 없지만 여전히 다른 시스템으로 ssh를 사용하여 명령을 실행할 수 있습니다. 가능합니까?

  • 이유/목표

    이를 통해 사용자는 UPS 전력이 낮을 때 SSH를 통해 연결된 다른 컴퓨터를 종료한 다음 주 컴퓨터를 종료할 수 있습니다. (통계를 모니터링하기 위해 USB를 통해 한 번에 한 대의 컴퓨터만 UPS에 연결할 수 있습니다.)

사람들이 사용자 이름 ups를 사용하여 SSH를 통해 로그인하는 것을 원하지 않지만 비밀번호 없이 원격 호스트에 SSH로 접속할 수 있으려면 Ups가 필요합니다.

답변1

암호화 필드를 *다음 으로 설정하십시오 !!./etc/shadow

예를 들어

# adduser tst  
# passwd -l tst
Locking password for user tst.
passwd: Success
# grep tst /etc/passwd
tst:x:1000:1000::/home/tst:/bin/bash
# grep tst /etc/shadow
tst:!!:17030:0:99999:7:::

현재 유효한 비밀번호가 없기 때문에 사용자는 로그인할 수 없습니다.

이제 파일 command="/thing/to/do"의 공개 키 시작 부분 에 a를 추가하세요.authorized_keys

예를 들어

# ls -l $PWD/authorized_keys 
-rw-r--r-- 1 tst tst 431 Aug 17 17:54 /home/tst/.ssh/authorized_keys

# cat $PWD/authorized_keys
command="/bin/echo hello" ssh-rsa AAAAB3NzaC1yc2E....etcetc

이제 키가 작동하지만 이 키가 수행하는 유일한 작업은 force 명령입니다.

$ ssh -i ~/.ssh/id_rsa tst@test1
hello
Connection to test1 closed.

다른 작업을 시도하면 실패하고 여전히 동일한 명령이 실행됩니다.

$ ssh -i ~/.ssh/id_rsa tst@test1 reboot 
hello
$

답변2

인증 키 파일에 지정된 공개 키와 관련된 필수 명령을 지정할 수 있습니다. "AUTHORIZED_KEYS 파일 형식" 섹션을 참조하세요.man sshd.

command="command"
    Specifies that the command is executed whenever this key is used for authentication. The command supplied by the user (if any) is ignored....

no-pty키의 옵션을 사용하여 pty 배포를 비활성화할 수도 있습니다 .

답변3

nologin"홈" 컴퓨터에서 셸을 사용하여 계정을 만들었습니다. 이 계정의 경우 종료해야 하는 시스템에 원격으로 로그인하는 데 사용할 수 있는 SSH 키를 생성해야 합니다.

nologin셸은 해당 계정이 로그인하는 것을 방지하지만 다른 시스템에서 원격 로그인을 위해 계속 사용할 수 있습니다.

쉘을 사용하여 사용자로 로그인하려면 nologin다음을 사용해야 합니다.su - user_name -s /bin/bash

내 요점은 "마스터" 시스템이 사람의 개입 없이 원격 서버를 자동으로 종료한다는 것입니다.

답변4

반대의 경우도 있습니다. USB를 통해 UPS에 연결된 기기가 온라인인지, 종료해야 하는 기기는 UPS에 연결된 기기가 일정 시간 동안 오프라인 상태인지 확인하는 예약된 작업을 설정하세요. . 행. 컴퓨터는 로컬 계정을 사용하여 예약된 작업을 실행하므로 작업을 수행하는 데 암호나 인증서가 필요하지 않습니다. 기기가 핑에 응답하면 핑 응답을 받았는지 확인하세요.

또 다른 방법은 전원 버튼을 누르는 것처럼 KVM을 사용하여 종료를 시작하는 것입니다. 머신 설정에 따라 전원 버튼을 누르면 정상적인 종료만 시작되거나 머신이 디스크에 일시 중지됩니다.

계정을 노출된 상태로 두거나 보안 허점(백도어)을 사용하지 않고 일종의 인증 없이 원격 컴퓨터에 로그인하는 방법을 모르겠습니다.

이는 작업을 달성하기 위해 요청하는 방법은 아니지만 목표 달성에 도움이 될 수 있는 방법입니다.

관련 정보