情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

GitHub:ユーザ名の入力を省略する方法とパスワードを一定時間記憶させる方法(https版)

Git (8) GitHub (2)

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にするのは変、と思った次第です(そんな遠い記憶があってひっかかったので)。

コメント(0)

新しいコメントを投稿