マシンコンソール(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 yes
sshd_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
sshd
IEのPAM設定/etc/pam.d/sshd
とキーワードを使用して参照するすべてのファイルを確認してください@include
。
pam_systemd.so
セッションフェーズでは、次のように呼び出されるモジュールが必要です。
session optional pam_systemd.so
特に、PAMモジュールは2つの環境変数XDG_RUNTIME_DIR
とDBUS_SESSION_BUS_ADDRESS
。
答え2
注:すべてがローカルで正しく機能している場合、問題は他のものに関連していることです*-environment-generators
。
問題の回避策として、env変数を設定せずにnotを使用できるので、次のように置き換えることをお勧め$UID
します(参照$(id -ru)
user-environment-generators
system-environment-generators
https://man.archlinux.org/man/systemd.environment-generator.7)デーモン自体が次systemctl --user
のように実行されるからです。システムサービスはシステム環境の影響を受けます。
答え3
SSH サーバーが PAM モジュールを使用するように構成されていることを確認します。存在する/etc/ssh/sshd_configまたは/etc/ssh/sshd_config.d/99-local.conf置く
UsePAM yes