認証情報(SSH)
Gitはローカルリポジトリとリモートリポジトリを連携して使います。リモートリポジトリとは文字通りリモートサーバにあるリポジトリで、ネットワークを介してアクセスすることになります。ネットワーク越しにアクセスする以上、なんらかの方法で通信相手が本当に正しい相手であるかを確認する必要があります。
このページでは、SSHを使用する場合の認証情報の設定方法について説明します。HTTPSを使用する場合の認証情報の設定方法については認証情報(HTTPS)を参照してください。
SSHキーの生成
Section titled “SSHキーの生成”以下のコマンドを実行します。
mkdir ~/.ssh
ssh-keygen -t ed25519
パスワードを聞かれるので入力します。パスワードを入力しても何も表示されませんが、入力されています。パスワードを入力した後、Enterキーを押します。
SSHキーが生成されると、以下のようなメッセージが表示されます。
The key's randomart image is:+--[ED25519 256]--+|++++oB+ o. ||*++**.oo ||*++o.o. ||+o. E . ||o+ o... S . ||. =. * o = || . oo + o o ||. . . . ||o. |+----[SHA256]-----+
公開鍵の登録
Section titled “公開鍵の登録”生成したSSHキーの公開鍵をGitHubに登録します。
- 以下のコマンドで公開鍵を表示し、マウスで選択してコピーします
Terminal window cat ~/.ssh/id_ed25519.pub - GitHubにログインし、右上のアイコンをクリックし、
Settings
を選択します - 左のAccess内の
SSH and GPG keys
を選択し、New SSH key
をクリックします - Titleに任意の名前を入力し、Keyに先ほどコピーした公開鍵を貼り付けます。KeytypeはAuthentication Keyのままにします
以下のコマンドを実行して、GitHubに登録した公開鍵が正しく登録されているか確認します。
ssh -T git@github.com
もしAre you sure you want to continue connecting (yes/no/[fingerprint])?
というメッセージが表示されたらyes
と入力します。
パスフレーズを求められたら、先ほど設定したパスワードを入力します。GitHubに登録した公開鍵が正しく登録されていると、以下のようなメッセージが表示されます。
Hi <ユーザー名>! You've successfully authenticated, but GitHub does not provide shell access.
SSHエージェントの設定
Section titled “SSHエージェントの設定”SSHエージェントを設定することで、パスフレーズを毎回入力する必要がなくなります。
以下のコマンドを実行して鍵を登録します。
ssh-add ~/.ssh/id_ed25519
登録できたか確認するために以下のコマンドを実行します。
ssh-add -l
Windowsの場合、以下のコマンドをホームディレクトリ直下の.bashrc
に貼り付けることで、Git Bash起動時にSSHエージェントが自動起動するように構成できます。
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () { (umask 077; ssh-agent >| "$env") . "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not runningagent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then agent_start ssh-addelif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then ssh-addfi
unset env