Git 管理するにあたって守ることまとめ
- GitHub の Private リポジトリで管理する
- 秘密鍵は Git リポジトリに含めない
参考ページ
- このページを軸にした。
- SSH 認証のやり方の基本をおさらい
- SSH_CONFIG についてのマニュアル
- Git 管理にあたって、
git clone
後のパーミッション設定の参考
SSH 鍵管理の Git リポジトリの内容
リポジトリ名
dotssh としました。最初は .ssh としようかと思ったのですけれども、この名前ですと自動で作られるディレクトリと名前が重複しますので、変えました。
ディレクトリ構造
最初は dotssh/
に各接続先のディレクトリを作っておりました。後に Git 管理をするために考えましたところ、 git clone
後のパーミッション設定を簡単にしたいとの思いから、各接続先のディレクトリは dotssh/conf.d/
としました。
このディレクトリの下に全ての接続先設定を置くことにしましたので、パーミッション設定は chmod オプション dotssh/conf.d/
とすれば良くなりました。楽です♪
$ tree -ap dotssh/
dotssh/
├── [drwx------] .git
... 略 ...
├── [-rw-------] .gitignore
├── [-rw-------] LICENSE
├── [-rw-------] README.md
├── [drwx------] conf.d
│ └── [drwx------] conoha
│ ├── [-rw-------] config
│ └── [-rw-------] id_rsa
├── [-rw-------] config
└── [-rw-------] install.sh
40 directories, 57 files
$
git clone
後のセットアップについて
git clone
後、リポジトリの install.sh を実行すれば秘密鍵の配置以外は準備するようにいたしました。次の内容です。
#!/bin/bash
set -eux
readonly DOT_PATH=${HOME}/dotssh
readonly SSH_PATH=${HOME}/.ssh
[[ ! -e ${SSH_PATH} ]] && mkdir ${SSH_PATH}
chmod 700 ${SSH_PATH}
chmod -R u=rwX,go= ${DOT_PATH}
ln -sfv ${DOT_PATH}/config ${SSH_PATH}/config
~/.ssh/
ディレクトリがなければ作る。~/dotssh/
ディレクトリ以下のパーミッションを設定する。~/.ssh/config
にシンボリックリンクを作り、リンク先を~/dotssh/config
とする。
パーミッション設定については、 ファイルやディレクトリのパーミッションを一括で置換したい – Qiita のコメント が役に立ちました。これを読み、 man chmod
で理解を深めました。
chmod -R u=rwX,go= ${DOT_PATH}
のオプションの意味は次のようになります。
-R
: 指定ディレクトリ以下を再帰的に設定u=rwX,go=
:u
: ユーザーに対して設定する。=
: パーミッションをゼロに設定する。r
: 読込権限 (4) を付加する。w
: 書込権限 (2) を付加する。X
: 実行権限 (1) を付加する。ただし、ディレクトリに対してのみで、ファイルは対象外。,
: 区切り。g
: グループに対して設定する。o
: その他に対して設定する。
SSH の設定ファイルの内容について
dotssh/config
は次の内容となります。
Host *
UseKeychain yes
Include ~/dotssh/conf.d/*/config
UseKeychain は Mac 固有の設定となります。名前の通り、キーチェーンアクセスを使って ssh 鍵のパスワードを入力してくれます♪次は man ssh_config
からの引用です。
UseKeychain On macOS, specifies whether the system should search for passphrases in the user’s keychain when attempting to use a particular key. When the passphrase is provided by the user, this option also specifies whether the passphrase should be stored into the keychain once it has been verified to be correct. The argument must be
yes'' or
no”. The default is “no”.
各接続先の設定
conf.d/conoha/config
の例です。
Host conoha
HostName 150.95.200.203
User username
IdentityFile ~/dotssh/conf.d/conoha/id_rsa
これで、接続するときは、 ssh conoha
でできるようになりました♪。ユーザー名も接続先も、秘密鍵のパスも、指定する必要はなく、楽です♪。ホストだけを指定すれば良いのです♪
おわりに
クローン後にセットアップスクリプトを実行するだけで即使えるようにはなりませんけれども、随分楽になるように感じます。
ssh 鍵に関しては、公開鍵、秘密鍵、どっちをクライアント・サーバのどっちに置くか、迷うことがあったのですけれども、今回管理するためのリポジトリを作成してみて、随分と理解が進んだように感じます♪。
以上です。