"대화형 인증이 필요합니다"라는 오류가 나타나는 이유는 무엇입니까?

"대화형 인증이 필요합니다"라는 오류가 나타나는 이유는 무엇입니까?

systemctl명령을 실행할 때마다 왜 이 오류가 나타나는지 이해할 수 없습니다 . 를 사용하여 실행해야 sudo하고 잘 실행된다는 것을 알고 있지만 왜 이런 일이 발생하는지 궁금합니다. 이전에는 이런 일이 발생하지 않았으며 파일을 구성하는 것 /etc/ssh/sshd_config외에는 특별한 작업을 수행하지 않았습니다 .

systemctl그 전에는 없이 명령을 실행하면 sudo사용자 비밀번호를 요청하는 텍스트 응답이 표시되었습니다.

예전엔 이런 식이었지

하지만 이제 이 요구 사항은 더 이상 나타나지 않습니다! 왜 그런 겁니까?

user@machine:~$ systemctl restart sshd
Failed to restart sshd.service: Interactive authentication required.
See system logs and 'systemctl status sshd.service' for details.

systemctl status sshd명령을 실행하면 다음 오류가 발생합니다 Couldn't open /etc/securetty: No such file or directory. 이것은 무엇에 관한 것입니까? 그런데 내 컴퓨터에 Ubuntu 20.04 LTS가 있습니다.

user@machine:~$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-05-21 19:47:32 UTC; 2h 51min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 14021 (sshd)
      Tasks: 5 (limit: 38329)
     Memory: 1.7G
     CGroup: /system.slice/ssh.service
             ├─14021 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
             ├─20182 ssh-server new -c 256 -s -l LANG=en_US.UTF-8
             ├─20183 -bash
             ├─46248 systemctl status sshd
             └─46249 pager

May 21 20:58:15 machine sshd[19925]: Disconnected from user user 217.138.209.001 port 2222
May 21 21:13:40 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:13:49 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:13:49 machine sudo[20203]: pam_unix(sudo:auth): authentication failure; logname=user uid=1000 euid=0 tty=/dev/pts/1 ruser=user rhost=  use>
May 21 21:13:51 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:13:55 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:38:02 machine su[34300]: pam_unix(su:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:38:05 machine su[34300]: pam_unix(su:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:38:05 machine su[34300]: (to root) robin on pts/1
May 21 21:38:05 machine su[34300]: pam_unix(su:session): session opened for user by user(uid=1000)

답변1

을 사용하면 sudo systemctlsystemd 작업을 로 예약하게 됩니다 root. root시스템 작업 예약은 항상 허용되므로 항상 작동합니다.

그러나 systemctlsudo 없이 실행 하면 systemd현재 사용자로 작업을 예약하게 됩니다. 당신이 이것을 할 수 있는지 systemd물어보십시오 . 해당 정책 구성을 확인하고 다음을 수행합니다.polkitpolkit

  1. 승인(비밀번호 필요 없음)
  2. 사용자 인증이 필요합니다(사람이 요청하고 있고 이 사람이 단말기 앞에 앉아 있는지 확인).
  3. 다른 사람으로 인증해야 합니다... 아마도 root: (사용자가 작업을 실행할 수 없으므로 관리자 비밀번호를 묻는 메시지가 표시됩니다).

둘 다 유효성 검사 스크립트를 차단하기 polkit위해 최선을 다합니다 sudo. 그렇기 때문에 --password선택의 여지도 없고 받아들일 sudo수도 sudo없습니다 echo 'password' | sudo ls. polkit비슷하지만 더 복잡하고 이해하기 어렵습니다. 스크립트 인증에 대한 이러한 혐오감은 권한 있는 작업이 사용자나 다른 권한 있는 프로세스에 의해 명시적으로 명령되어야 한다는 사실에서 비롯됩니다. 우리는 일반적으로 권한 있는 작업을 지시하는 권한 없는 프로세스/스크립트를 원하지 않습니다.

polkit인증을 시도 하면 통과됩니다 polkit-agent. 화면에 인증 창이 표시되는 경우 이는 일반적 polkit-agent으로 데스크톱 환경에서 제공됩니다. 그러나 적절한 세션에 연결하려면 프롬프트가 올바른 세션에 나타나도록 사용자 polkit-agent에 대한 일부 정보를 알아야 합니다 .$DISPLAY$XAUTHORITY

귀하의 경우에는 이미 ssh컴퓨터에 있으므로 화면이 표시되지 않습니다. 이 경우 텍스트 프록시로 "폴백"되지만 프록시가 루트가 아닌 사용자로 인증하는 문제가 있는 것 같습니다. 또는 인증 중이지만 작업 일정을 설정할 권한이 없다는 사실을 깨닫는 문제가 있는 것 같습니다 systemd. 이 securetty메시지는 실제로 사용자를 인증할 수 있는 깨끗한 환경이 없음을 나타냅니다(예: 다른 프로세스가 표준 입력을 가로채거나 사용자가 스크립트가 아닌 실제 사람인지 확인할 수 없음).

이유가 무엇이든 근본 원인은 ssh시스템에 대한 액세스 권한을 얻었지만 시스템 작업을 예약할 권한이 없다는 것입니다.

두 가지 옵션이 있습니다:

  1. 사용 sudo systemctl. 이것은 가장 간단한 해결책이지만 어떤 이유로 이것이 허용되지 않는 경우(예: 작업 스크립트를 작성 중이고 추가 systemd하고 싶지 않은 경우 ) 반드시 언급하십시오.:NOPASSWD/etc/sudoers

  2. 사용자로 작업할 수 있도록 규칙을 polkit실행할 수 있는 규칙을 만듭니다 . systemd이 작업을 수행하는 방법을 설명하는 좋은 답변이 있습니다.여기.

관련 정보