AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

apache ユーザで git pull できるようにする

いわゆる RHEL 系で httpd インストールした以下の状態で、 apache:apache のまま github 運用するときどうするか、というやつ。

apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

apache ユーザの設定

sudo -u apache でユーザ指定して git 各種コマンドで github と通信できるようにする。 鍵ファイルは DeployKey に登録するものとする。

作業手順

  • 鍵ファイル名は、仮に key.pem としています
  • 公開鍵 (key.pem.pub)も 600 にしてるけど、まあやらなくていいですね……
  • root ユーザで作業しています、ゆるして
[root@localhost ~]$ mkdir -p /usr/share/httpd/.ssh;cd $_
[root@localhost .ssh]$ ssh-keygen -t ecdsa -f key.pem -N ""
[root@localhost .ssh]$ vi config
[root@localhost .ssh]$ touch known_hosts
[root@localhost .ssh]$ chmod 600 key.pem;chmod 600 key.pem.pub
[root@localhost .ssh]$ chmod 644 config;chmod 644 known_hosts
[root@localhost .ssh]$ chown -R apache:apache /usr/share/httpd/.ssh/
config
Host github.com
  HostName github.com
  User git
  IdentityFile /usr/share/httpd/.ssh/key.pem
追記

運用環境のルールなどあると思いますが、鍵ファイルは生成時のタイムスタンプを入れておくと、Deploykey が失効するような環境ではある程度わかりやすい (要不要の判別) かもしれません。

そういう環境、結構あると思うんよ (引き継ぎなしの環境保守を引いたり)。

PREFIX に、環境を表すキーワードなど適当に入れてもらうとよりよさそう。

`date "+%Y%m%d%H%M%S"`-PREFIX_deploykey.pem

接続テスト

以下 apache ユーザで接続をテストします。

[root@localhost .ssh]$ sudo -u apache ssh -T git@github.com
Hi deploy-key! You've successfully authenticated, but GitHub does not provide shell access.

オッケーですね。