スポンサーリンク
GitHubを使っていると、git pushするときなどの書き込みを行う際に、ユーザ名とパスワードの入力を求められます。パスワードを毎回入力するのはよいものの、ユーザ名を毎回入力する必要はないと思ったので、省略する方法を調べたのですが、「httpsではなく、sshを使う」という対策ばかりがひっかかり、httpsのまま省略する方法がぱっと出てこなかったので、httpsのまま、ただ単にユーザ名の入力を省略する方法を紹介します。
目次
スポンサーリンク
ユーザ名の入力が面倒
git push のような、GitHub上のレポジトリの変更を伴うコマンドを実行する際、もしくは、非公開のレポジトリにアクセスする際に、ユーザ名とパスワードを要求されます。
頻繁に利用するからといって、覚えてくれるわけではありません。
また、「$ git config --global user.name」で設定する名前とはまた別なので、そちらを使ってくれるわけでもありません。
「SSHなら名前の入力が不要」という話
この対策として紹介されているのが、「HTTPS」で接続せずに、「SSH」で接続しろ、というものです。
鍵のペアを作り、SSHの公開鍵をGitHubに登録する手順が説明されていたりします。
SSH接続に使うURLをGitHubでコピーしてくると、「git@github.com:username/project.git」というURLを使うことになります。
「HTTPS」が悪い?
このタイプの対策を見ていると、ユーザ名の入力が毎回必要なのは、httpsのURL(GitHubのclone URLのデフォルト)である「https://github.com/username/project.git」を使っているからであって、httpsだとできないからsshを使え、というように読めます。
HTTPSのURLにユーザ名を含めればいい
しかし、URLにユーザ名を埋め込めばいいのでは?と思ったので試してみました。
つまり、
https://github.com/username/project.git
という形式のURLに、次のようにユーザー名(yourusername)を埋め込むだけです。
https://yourusername@github.com/username/project.git
解決
この、URLへの標準的なユーザ名の埋め込みにより、コマンド実行時、最初に「Username for 'https://github.com'」と聞かれていたのが飛ばされて、「Password for 'https://did2@github.com'」と表示されるようになりました。
パスワードを省略する
この方法で、ユーザ名の入力を省略できたのですが、それでもプライベートレポジトリだったりすると、コマンド1回1回パスワードが要求されて非常に大変です。
そこで、パスワードを一定時間記憶させて、パスワードの入力を減らします。
$ git config --global credential.helper 'cache --timeout=3600'
これで、パスワードを一度入力すると、1時間(3600秒)パスワードの入力が不要になります(timeoutパラメータで秒数を設定可能)。
参考:Caching your GitHub password in Git - User Documentation
先程はレポジトリごとの設定でしたが、こちらはレポジトリをまたいだクライアント側の全体設定です。
レポジトリ固有の設定にする場合は、「--global」を省いてください(のはず)。
背景:SSHよりHTTPSが推奨されているから
GitHubのヘルプでは、cloneの方法についての説明の中で、「Cloning with HTTPS (recommended)」とされており、ユーザ名を省略するためだけにSSHにするのは変、と思った次第です(そんな遠い記憶があってひっかかったので)。
スポンサーリンク
スポンサーリンク