Ssh

在 ssh 登錄之前執行腳本……但只執行一次

  • March 29, 2019

我希望有人可以對這個問題提供一些見解,我找到了在 ssh 登錄之前執行腳本的解決方案。這是通過將以下行放在 /etc/pam.d/sshd 中並允許在 /etc/ssh/sshd_config 中進行 pam 身份驗證來完成的

session    required pam_exec.so /home/pc/myScript.sh

而且效果很好,我注意到的問題是退出 SSH 會話後腳本會再次執行。這種特殊行為完全破壞了我的腳本的目的,有沒有辦法解決這個問題?我想我可以從一個文件中寫出/讀取它的執行時間,但我想知道是否有更好的方法。

附加資訊

  • 作業系統是 Fedora 伺服器 ARM 29
  • wall我通過在 shell 腳本上執行確定腳本執行了兩次
  • 這是我的 /etc/pam.d/shhd

.

#%PAM-1.0
auth       substack     password-auth
auth       include      postlogin
account    required     pam_sepermit.so
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so

### My script
session    required pam_exec.so /home/pc/aScriptThatShouldOnlyRunOncePriorToLogin.sh
###
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    optional     pam_motd.so
session    include      password-auth
session    include      postlogin

您可以使用 PAM 中可用的環境變數,例如$PAM_TYPE

#!/bin/sh
if [ "$PAM_TYPE" != "open_session" ]
   then exit 0
else
   Your script here

編輯:參考:http ://www.linux-pam.org/Linux-PAM-html/sag-pam_exec.html

引用自:https://unix.stackexchange.com/questions/507811