正しい環境変数を使用してSSH接続を介してシステムユーザーユニットをどのように起動しますか?

正しい環境変数を使用してSSH接続を介してシステムユーザーユニットをどのように起動しますか?

マシンコンソール(Arch Linux)で実行すると正しく実行されるsystemd --userユニットがあります。ただし、システムにSSHで接続し、同じコマンドを実行してユーザーセルを起動すると失敗します。エラーは次のとおりです。

[user@remote ~]$ systemctl --user start my-user-service.service  
Failed to connect to bus: No such file or directory

[user@remote ~]$ systemctl --user show-environment  
Failed to connect to bus: No such file or directory

私はUsePAM yessshd_configで設定しました。

リモートコンピュータのユーザーに次の2行を追加すると.bashrc(そのユーザーとしてSSHセッションに接続する前に)、問題を解決できます。

export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"

しかし、この方法はアーチウィキに言及されておらず推奨しないようです。上記のすべての方法を試しました。systemd/User#Environment_variablesから作成環境ジェネレータスクリプトが含まれています。私はそれらのどれも働かせることができません。それぞれの場合、上記で最初に示したのと同じエラーが発生します。

私が試した単純なジェネレータは次のとおりです。/usr/lib/systemd/user-environment-generators/40-user-env-generator

#!/bin/bash

echo XDG_RUNTIME_DIR="/run/user/$UID"
echo DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"

この問題を解決する正しい方法は何ですか?

編集:新しい情報を追加しました:

猫/etc/pam.d/sshd

#%PAM-1.0
#auth     required  pam_securetty.so     #disable remote root
auth      include   system-remote-login
account   include   system-remote-login
password  include   system-remote-login
session   include   system-remote-login

cat/etc/pam.d/system-remote-login

#%PAM-1.0
auth      include   system-login
account   include   system-login
password  include   system-login
session   include   system-login

cat/etc/pam.d/system-login

#%PAM-1.0
auth       required   pam_tally2.so        onerr=succeed file=/var
/log/tallylog
auth       required   pam_shells.so
auth       requisite  pam_nologin.so
auth       include    system-auth

account    required   pam_tally2.so
account    required   pam_access.so
account    required   pam_nologin.so
account    include    system-auth

password   include    system-auth

session    optional   pam_loginuid.so
session    optional   pam_keyinit.so       force revoke
session    include    system-auth
session    optional   pam_motd.so          motd=/etc/motd
session    optional   pam_mail.so          dir=/var/spool/mail standard quiet
-session   optional   pam_systemd.so
session    required   pam_env.so

猫/etc/pam.d/system-auth

#%PAM-1.0

auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so

ベストアンサー1

sshdIEのPAM設定/etc/pam.d/sshdとキーワードを使用して参照するすべてのファイルを確認してください@include

pam_systemd.soセッションフェーズでは、次のように呼び出されるモジュールが必要です。

session optional pam_systemd.so

特に、PAMモジュールは2つの環境変数XDG_RUNTIME_DIRDBUS_SESSION_BUS_ADDRESS

おすすめ記事