PAM認証システムでパスワード無しでログインする

cockpitのログイン無しはありか?

cockpitが非常に便利なので、すべてのサーバに入れているのだが、Tailscaleを入れたので、cockpitのログイン画面を大公開するのではなく、tailscaleのVPNを通じてしかアクセスできないようにした。

しかしここで当然のごとく疑問に思ったのは、外からは全くアクセスできないのに、わざわざパスワードなんか入れる必要なんかあるのか?である。

そこで、面倒なパスワード無しで入れないものか考えた。デフォルトでは、そのlinuxのアカウントが使われることになっている。つまり、rootで入るならばrootのパスワードを入力する必要があるのだが、これが面倒。

PAMによる認証

いろいろ調べてみると、cockpitはPAMという、共通認証モジュールを使っていることがわかった。この標準の状態で、そのLinuxのアカウントを使うというに過ぎない。

ということは、パスワード無しで入る方法もあるんじゃないかと思って調べてみると、LinuxのPAM認証の設定入門という記事を発見した。

結論を言えば、cockpitの認証の定義は、/etc/pam.d/cockpitというテキストファイルにあり、そこにはこう書いてある。

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_ssh_add.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
# 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    optional     pam_keyinit.so force revoke
session    optional     pam_ssh_add.so
session    include      password-auth
session    include      postlogin

この最初の方に「auth sufficient pam_permit.so」を追加するだけだった。

#%PAM-1.0
auth       sufficient   pam_permit.so  # これを追加
auth       required     pam_sepermit.so
auth       substack     password-auth
他の設定

良くわかってないので、他の設定を消してしまって良いものかはわからない。

実際の結果

この設定を行った後では、rootでさえパスワード無しで入れてしまう。

いったんログアウトして、一般ユーザの名前でもパスワード無しで入れてしまう。ただし、しっかり「制限付きアクセス」となっていた。

まさに所望の結果である。このcockpitは、VPNからしかアクセスできないので、パスワード入力など必要ない。