GitHubにssh接続する方法についてまとめています。
GitHubにSSHでアクセスする方法
GitHubとローカルの開発マシンとの接続をsshを使って行う方法について解説しています。
参考)GitHub に SSH で接続する – GitHub Docs
- SSHアクセス用の秘密鍵・公開鍵を作成
- ssh-agentに秘密鍵を登録
- GitHubに公開鍵を登録
- GitHubにSSH接続をおこなう
以下、ubuntu 18.04環境を例にして解説しています。
SSHアクセス用の秘密鍵・公開鍵を作成
GitHubへのSSHアクセス用に秘密鍵、公開鍵を作成します。すでに作成済みの場合は、この手順は不要です。
まずは、ユーザディレクトリ以下の.sshが存在するかどうかを確かめます。ディレクトリが存在しなければ、秘密鍵・公開鍵が存在しないことになります。
$ ls -al ~/.ssh ls: '/home/user1/.ssh' にアクセスできません: そのようなファイルやディレクトリはありません
ssh-keygenコマンドで秘密鍵・公開鍵を作成します。ssh-keygenの-Cの後ろにはユーザのメールアドレスを指定します。パスフレーズとは秘密鍵にアクセスするためのパスワードです。
$ ssh-keygen -t ed25519 -C "user1@mydomain.com" Generating public/private ed25519 key pair. Enter file in which to save the key (/home/user1/.ssh/id_ed25519)::←そのままEnterキーを押す Created directory '/home/user1/.ssh'. Enter passphrase (empty for no passphrase):←パスフレーズを入力 Enter same passphrase again:←再度パスフレーズを入力 Your identification has been saved in /home/user1/.ssh/id_ed25519. Your public key has been saved in /home/user1/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:NwCltppniWoIohkypx+nzi+yruDDt/zxm0wz2quoPz8 user1@mydomain.com The key's randomart image is: +--[ED25519 256]--+ | ... | | o | | o . | | . . . | | . S o | |* . + . . . | |BB. =.++ | |O++B.EB + | |=X@B*=oBo | +----[SHA256]-----+
lsコマンドで確認すると、鍵ファイルが生成されています。
$ ls -l ~/.ssh 合計 12 -rw------- 1 user1 usergroup 464 6月 21 09:16 id_ed25519 -rw-r--r-- 1 user1 usergroup 100 6月 21 09:16 id_ed25519.pub -rw-r--r-- 1 user1 usergroup 884 6月 21 09:31 known_hosts
ssh-agentに秘密鍵を登録
ssh-agentとは、SSH接続時にパスフレーズを自動入力してくれるサービスです。
$ eval "$(ssh-agent -s)" Agent pid 3529 $ ps -ef | grep ssh-agent | grep user1 user1 3529 1 0 09:18 ? 00:00:00 ssh-agent -s user1 3531 2867 0 09:18 pts/2 00:00:00 grep ssh-agent
都度手動起動がめんどうな場合は、.bash_profileなどに記述しておくことも可能です。
ssh-addで、ssh-agentに秘密鍵を登録します。秘密鍵は、先ほど.ssh下に作成したファイルのうち、「ファイル名に.pubが付いていない方」です。
$ ssh-add ~/.ssh/id_ed25519 Enter passphrase for /home/user1/.ssh/id_ed25519:←パスフレーズを入力 Identity added: /home/user1/.ssh/id_ed25519 (user1@mydomain.com)
GitHubに公開鍵を登録
GitHubにサインインし、公開鍵を登録します。
関連)GitHub公式サイト
サインイン後、画面右上のアイコンをクリックし、Settingsを選択します。
SSH and GPG keysをクリックし、SSH keysの右にある「New SSH key」をクリックします。
Titleに鍵の名前をつけ、Keyに公開鍵の内容を貼り付けます。
公開鍵の内容は、以下のように確認可能です。
$ ls ~/.ssh id_ed25519 id_ed25519.pub user1@ubuntu:~$ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBGa+UZwB66Sg5Dhcy5htR71S7weLP4fApZagnmd9AZ0 user1@mydomain.com
以下のように、公開鍵が登録されました。
GitHubにSSH接続をおこなう
GitHubへのSSH接続をテストしてみましょう。以下のコマンドを実行するとRSA fingerprint(サイトのなりすましをチェックする仕組み)が表示されます。GitHubのフィンガープリントと一致していれば、yesと入力します。
$ ssh -T git@github.com The authenticity of host 'github.com (13.114.40.48)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)? yes
GitHubのフィンガープリントは、以下のページで確認できます。
参考)GitHub の SSH キーフィンガープリント – GitHub Docs
続くメッセージに、GitHubのユーザ名を含むテキストが表示されればSSH接続テストは成功です。
Warning: Permanently added 'github.com,13.114.40.48' (RSA) to the list of known hosts. Hi (GitHubのユーザ名)! You've successfully authenticated, but GitHub does not provide shell access.
では、実際にgitコマンドを使ってSSHでリポジトリをクローンしてみましょう。GitHubにてクローンしたいリポジトリを開き、Codeボタンをクリックします。次にSSHをクリックし、クリップボードアイコンをクリックします。接続用の文字列がコピーされます。
開発機のターミナルにて、git cloneのあとに接続用の文字列をペーストします。
$ git clone git@github.com:kabukinger/samplex.git Cloning into 'samplex'... remote: Enumerating objects: 25, done. remote: Counting objects: 100% (25/25), done. remote: Compressing objects: 100% (15/15), done. remote: Total 25 (delta 1), reused 3 (delta 0), pack-reused 0 Receiving objects: 100% (25/25), 4.59 KiB | 783.00 KiB/s, done. Resolving deltas: 100% (1/1), done.
これで、SSHでのgit cloneが実行できるようになりました。
GitHubにSSH接続 まとめ
- GitHubにSSH接続するには公開鍵・秘密鍵が必要
- ssh-agentでパスフレーズ入力を自動化する
- SSHでgit cloneするには、SSH用の接続文字列を使用する