SSH를 통해 다시 로그인하지 않고 원격 서버에서 시스템 사용자/셸을 전환하는 방법은 무엇입니까?

SSH를 통해 다시 로그인하지 않고 원격 서버에서 시스템 사용자/셸을 전환하는 방법은 무엇입니까?

이는 SSH 액세스 및 systemd가 있는 원격 시스템입니다.

systemd 사용자 명령을 실행하려고 하면 기본적으로 다음 오류가 발생합니다.

$ systemctl --user status
Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)

하지만다른 답변에서는 요청된 변수를 설정하거나 "가짜"로 제안합니다.IMHO 이것은 올바른 해결책이 아닙니다.

문제는 기본적으로 사용자로 로그인했다는 것입니다(저는 이것을 시스템 관리자로 사용하고 있습니다).나는 다음으로 사용자를 전환했습니다su. 따라서 systemd가 내가 여기서 어떤 사용자로 실행하고 있는지 알지 못한다는 것은 매우 이해하기 쉽습니다. 그래서 혼란스럽다는 것을 알고 있습니다.

시스템 서비스 이용시 주의사항어쩌면 시스템 버스를 사용할 수도 있습니다어쩌면 더 나은 생각일 수도 있습니다.

그러나 Podman을 실험하고 특히 podman generate systemd사용자 수준 세션을 원하려면오래 끄는user( loginctl enable-linger)는 유용한 방법입니다.


이제 실제 질문은 다음과 같습니다.사용자가 현재 로그인되어 있음을 systemd가 실제로 알 수 있도록 다른 사용자로 전환하려면 어떻게 해야 합니까?나는 단지 다른 사용자로서 (새 셸에서) "작동"하고 싶습니다. 내가 사용하는 것처럼 su.

다른 사용자로서 서버에 SSH로 접속하고 싶지 않습니다. 이를 위해서는 추가 SSH 키와 기타 불필요한 항목이 필요합니다. 로그인 시 사용자를 전환하고 싶습니다( sudo예: sysadmin으로 실행할 수 있는 사용자).

노력하다

그렇습니다 sudo machinectl login. 그러나 그 내용은 다음과 같습니다.

  • 거기에 사용자 이름을 다시 입력해야 해서 불편해요(그럴 수가 없어요 sudo machinectl login my-user.
  • 한 가지 문제는 내 사용자가 podman의 시스템 사용자이고 비밀번호가 설정되어 있지 않아 비밀번호로 로그인할 수 없기 때문입니다.

나는 machinectl shell이것이 내가 하고 싶었던 일과 정확히 일치한다는 것을 알았지만, 그것을 작동시킬 수는 없었습니다. 나는 노력했지만 machinectl shell my-user항상 machinectl shell my-user@localhost나에게 다음과 같이 말합니다.

쉘 PTY를 얻을 수 없습니다: 알려진 시스템 'localhost'가 없습니다.

글쎄... 이것은 또한 내가 "기계"를 갖고 있지 않다는 것을 보여줍니다. (그게 무엇이든 간에요? 그렇죠 localhost?)

$ machinectl list
No machines.

답변1

아, 거의 다 알았어요:

어떤 이유로든 로컬 "머신"(예: "localhost") machinectl:host.

또한 어떤 이유로든 숨겨져 있으므로 실제로 보려면 machinectl list달려가야 합니다 .machinectl list --all

이제 우리가 이것을 알고 있다는 점을 고려하면 실제로는 매우 간단합니다. 다음 명령을 실행하기만 하면 됩니다.

$ sudo machinectl shell [email protected]

이제 새로운 쉘에 들어왔습니다 my-user. 환경 변수 $XDG_RUNTIME_DIR와 원래 오류에 있는 변수를 확인하면 $DBUS_SESSION_BUS_ADDRESS이를 어느 정도 확인할 수 있습니다 .

또한 해당 "로컬" 시스템에 대한 지식이 필요하지 않은 또 다른 대체 구문이 있다는 점에 유의하세요.

$ sudo machinectl shell --uid my-user

사실 기사 말미에도 언급됐지만machinectl예제 섹션의 매뉴얼 페이지.

관련 정보