Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

設定を ~/.config/git/config から他のファイルに移す #113

Open
masutaka opened this issue Oct 22, 2023 · 4 comments
Open

設定を ~/.config/git/config から他のファイルに移す #113

masutaka opened this issue Oct 22, 2023 · 4 comments

Comments

@masutaka
Copy link
Owner

GitHub の Credential を $ github-nippou init~/.config/git/config (or ~/.gitconfig) に書き込むのは、誰かにその設定ファイルを共有した時、漏洩してしまう観点から良くなかった。

~/.config/github-nippou/config.yml などの独自設定ファイルに移す。peco が参考になるかも。

https://github.com/peco/peco/blob/v0.5.11/config.go#L181-L222

// Try in this order:
// $XDG_CONFIG_HOME/peco/config.json
// $XDG_CONFIG_DIR/peco/config.json (where XDG_CONFIG_DIR is listed in $XDG_CONFIG_DIRS)
// ~/.peco/config.json

@masutaka
Copy link
Owner Author

ちなみに私は環境変数で注入するようにしている。

~/bin/.envrc で環境変数を定義して、

$ cat ~/bin/.envrc
export GITHUB_NIPPOU_USER='masutaka'
export GITHUB_NIPPOU_ACCESS_TOKEN='ghp_[SECRET]'
export GITHUB_NIPPOU_SETTINGS_GIST_ID='60b0d60372ccba445d9bbdf47d9ced4f'

普段は ~/bin/my-github-nippou というラッパースクリプト経由で github-nippou を使う。direnv exec 使うことで、このスクリプトを使ったときだけ、環境変数が定義されるような形。

#!/bin/sh

direnv exec "$(dirname $0)" /opt/homebrew/bin/github-nippou $@

@MH4GF
Copy link
Contributor

MH4GF commented Oct 22, 2023

FYI: 自分は.gitconfigに載せたい秘匿情報は .gitconfig.local というファイルに追加して利用しています。

# ~/.gitconfig 
# dotfilesとしてGitHubにpushする

[include]
	path = ~/.gitconfig.local
[github-nippou]
	user = MH4GF
	settings-gist-id = b24bf66225e48fa4aaf644d7495bae88

ref: https://github.com/MH4GF/dotfiles/blob/master/.gitconfig

# ~/.gitconfig.local
# 秘匿情報を含むためコミットしない

[github-nippou]
	token = gho_xxx

@MH4GF
Copy link
Contributor

MH4GF commented Oct 22, 2023

FYI: GitHub CLIは設定情報を ~/.config/gh に格納しており、 aliasなどの設定が記載された config.yml と認証情報を格納する hosts.yml に分かれています。

ref: https://chroju.dev/blog/gh_github_cli_can_do_anything#:~:text=GitHub%20CLI%20%E3%81%AE%20config%20%E3%82%92%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B

分けておくと設定ファイルを共有しても秘匿情報の漏洩はしづらくなりますし、git管理しやすくなるためPCセットアップがしやすくなるかと思います!GitHub CLIの場合はconfig.ymlを配置する→ gh auth login の2つを行えばセットアップが完了するため便利でした。

@masutaka
Copy link
Owner Author

masutaka commented Oct 23, 2023

FYI: 自分は.gitconfigに載せたい秘匿情報は .gitconfig.local というファイルに追加して利用しています。

たしかにユーザー側の対策としてはこれも良いですね。
# github-nippou デフォルトでガードしたほうが良いと思いつつ、早幾年。:sweat_drops:

認証情報を格納する hosts.yml に分かれています。

これも余談になりますが、$ gh auth token で取得できる GitHub CLI の token は、macOS だとキーチェーンアクセスアプリに保存されているっぽいですね。

$ gh auth status
github.com
  ✓ Logged in to github.com as masutaka (keyring)
  ✓ Git operations for github.com configured to use https protocol.
  ✓ Token: gho_************************************
  ✓ Token scopes: gist, read:org, repo, workflow

"keyring" がキーチェーンアクセスアプリっぽい。

キーチェーンアクセスアプリにある「gh:github.com」という項目だと思うけど、「パスワードを表示」しても go-keyring- という文字列を確認できるだけだった。しかし、それをテキストエディタ等にコピー&ペーストすると go-keyring-base64:****** を確認できた。

追記:

go-keyring-base64: 後ろの文字列を Base64 Decode すると gho_************************************ を得られた。

$ ruby -r base64 -e 'puts Base64.decode64("**SECRET**")'
gho_************************************

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants