Apple Watchでsudoしたい(今度はLinuxのsudo)

Apple Watchでsudoしたいという話を書いたが、本音を言うと「sshでログインしてるRHELのsudo時にパスワードを入力するのがダルい」です。macOSのパスワードは大したことないんです。自宅鯖のパスワードは30文字近くあるので、慣れているとは言え、何度も連続するとかなりダルい。

で、以下のフローを考えて、macos-authというPAMを実装した。

+----------------------+                         +----------------------+
| Linux host | | macOS user session |
| | | |
| user runs sudo | | macos-auth-agent |
| | | | LocalAuthentication |
| v | | Touch ID / Watch |
| Linux PAM | | ^ |
| | | | | |
| v | signed request | | |
| pam_macos_auth.so |-------------------------+----------+ |
| | | via SSH RemoteForward Unix socket |
| v | | |
| macos-auth-helper | signed response | |
| | |<-----------------------------------------------|
| v | | |
| PAM result | | |
| - approved: success| | |
| - unavailable: | | |
| password fallback | |
| - tamper/unsafe: | | |
| hard fail | | |
+----------------------+ +----------------------+

macOS側

インストールはbrewで。

brew update
brew install --cask rioriost/cask/macos-auth

Linux側

インストールはrpm/dnf、あるいはdpkg/aptで。

rpm -Uvh macos-auth-0.1.0-1.rhel9.x86_64.rpm
dpkg -i macos-auth_0.1.0_ubuntu24.04_amd64.deb

設定

なかなかややこしいので、README.ja.mdをよく読んで設定してみてください。

キモい!

うまく設定できれば、sudoすると、こうなります。