STNSでLinuxのユーザ管理を統合してみる
とある事情で複数台のLinuxで同一のユーザを扱うとかいう話で出てきて、都度ユーザを追加とかいう面倒なことをしなければならず、何台にも及び、かなりイラっとしたので調べてみてSTNSなるものに行き着いた。
なんかLinuxのユーザ情報を一元管理できて複数台で認証情報を統合できるとかいうことらしい。最近はRESTみたいなフォーマットになっているとのことで早速、実験してみる。
・構築環境
Ubuntu24.04LTS(AmazonEC2 AMI)
◆構築方法
1.サーバ側
$ curl -fsSL https://repo.stns.jp/scripts/apt-repo.sh | sh $ sudo apt install -y stns-v2 libnss-stns-v2 cache-stnsd $ cd /etc/stns/ $ sudo mkdir conf.d $ sudo tee -a /etc/stns/server/stns.conf <<_EOS_ port = 1104 include = "/etc/stns/conf.d/*.conf" _EOS_ $ sudo groupadd -g 2000 test-example $ sudo tee /etc/stns/conf.d/sample.conf <<_EOS_ [users.example1] id = 1001 group_id = 2000 shell="/bin/bash" directory = "/home/example1" keys = ["ssh-rsa AAAAhogefuga・・・"] [users.example2] id = 1002 group_id = 1001 shell="/bin/bash" directory = "/home/example2" keys = ["ssh-rsa AAAAhogefuga・・・"] [users.example3] id = 1003 group_id = 1001 shell="/bin/sh" directory = "/home/example3" keys = ["ssh-rsa AAAAhogefuga・・・"] [groups.example] id = 1001 users = ["example1","example2","example3"] _EOS_ $ sudo systemctl start stns $ sudo systemctl enable stns
2.クライアント側
$ sudo apt remove -y --purge ec2-instance-connect $ sudo shutdown -r now $ curl -fsSL https://repo.stns.jp/scripts/apt-repo.sh | sh $ sudo apt install -y stns-v2 libnss-stns-v2 cache-stnsd $ SERVER_IP=127.0.0.1 #サーバのIPアドレス(名前解決できるならホスト名) $ sudo tee -a /etc/stns/client/stns.conf <<_EOS_ api_endpoint = "http://${SERVER_IP}:1104/v1" [cached] enable = true _EOS_ $ sudo systemctl restart cache-stnsd $ sudo systemctl enable cache-stnsd $ curl http://${SERVER_IP}:1104/v1/users $ curl http://${SERVER_IP}:1104/v1/users?name="example1" $ /usr/lib/stns/stns-key-wrapper example1 $ sudo vi /etc/nsswitch.conf ---------------------- passwd: files systemd stns #追記 group: files systemd stns #追記 shadow: files systemd stns #追記 gshadow: files systemd ---------------------- $ sudo vi /etc/ssh/sshd_config # 以下追記 ----------------------------- PubkeyAuthentication yes AuthorizedKeysCommand /usr/lib/stns/stns-key-wrapper AuthorizedKeysCommandUser root ----------------------------- $ sudo tee -a /etc/pam.d/sshd <<_EOS_ session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 _EOS_ $ sudo shutdown -r now
◆参照サイト
・STNS構築
https://zenn.dev/sogaoh/articles/21-12-25-af3793dc2fcd0a
https://qiita.com/shogomuranushi/items/f09fcdeb146b45452403
https://qiita.com/Ets/items/2fd0c6d6dcce86c6588d
https://kun432.hatenablog.com/entry/linux-user-management-with-stns
・AMIのsshエラー時の参考
https://www.servernote.net/article.cgi?id=ec2-instance-connect-ssh-login-error
最初はGCEで試していたけど、どんだけファイアウォールルールいじってもstnsのサイトだけcurlが成功しなくてあきらめてAWSでやることにした。そしたら今度はAWS側でssh接続時にエラーでログインできないってなってauth.logひいてssh書き替えているAWSのパッケージをアンインストールしたら驚くほどあっさり成功した。
こちらの使い道としては既存のグループとかユーザも残しつつ使う。なのであとは、その辺の確認が必要。複数グループに追加するところは何とかできた。既存グループとの共存がどう動くかはこれから見てみます。一通り確認が終わったらまぁDockerにしてみるとか、Serveless構成にしてみるとか考えたいところですね。そこまで行けるかどうかは謎、なんせこれ動かすためだけにさんざん手こずるほど低スキルなので難しいだろうなぁ。。。
コメント