概要
Github, GitlabにおけるSSH接続の手順をまとめます。SSH接続とは、簡単に言うと秘密鍵・公開鍵を利用した保護された接続方法です。
備忘録程度なので曖昧性高めですが、ご容赦ください。
この記事で扱うこと
- sshファイルの作成方法
- 鍵の作成
- Githubへの公開鍵の登録
- Gitlabへの公開鍵の登録
- 接続テスト
この記事で扱わないこと
- Github,Gitlabでのアカウント登録
- Gitbashのダウンロード
- 接続後のローカルでの操作(リモートブランチからのクローンなど)
手順
sshファイルの作成
- エクスプローラーを起動し、ユーザーのホームディレクトリに移動
- ユーザーのホームディレクトリで右クリック→「Git Bash Here」でGit Bashを起動
- 以下のコマンドを実行
# .sshのディレクトリ作成
$ mkdir .ssh
# .sshディレクトリに移動
$ cd .ssh
鍵の作成
- .sshディレクトリにいる状態で以下コマンドを実行し、鍵を作成
# ssh-keygen で2種類の鍵(秘密鍵・公開鍵)を作成
# -t オプションで鍵タイプを設定(以下ではrsaを選択)
# -f オプションで鍵の名前を設定(以下では"id_rsa"という名前で作成)
$ ssh-keygen -t rsa -f id_rsa
- 上コマンドを実行するとパスフレーズを求められますが、未設定にすることも可能です。その場合は何も入力しない状態でEnterを押してください。
- パスフレーズの再入力が求められるので、再度入力します。(未設定の場合は再度空欄でEnter)
- エクスプローラーの.sshディレクトリに2つのファイルができていることを確認
- 上の例では 秘密鍵の「id_rsa」と、公開鍵の「id_rsa.pub」 が作成されます
- 簡単な説明
- 2つのうち、公開鍵の方をGithub,Gitlabに登録します。
- 登録した公開鍵とローカル(手元)にある秘密鍵のキーペアによって接続のセキュリティが担保されます。
- 秘密鍵はほかの人に漏洩することのないよう保管してください。
Tips. 「id_rsa」という名前
※読み飛ばしていただいても大丈夫です
今回は省略しますが、他サイト等のセットアップ法で紹介されているConfigファイルに関する設定をしない場合、デフォルトでは.sshディレクトリの「id_rsa」という名前のkeyが読み込まれる仕様になっています。
こだわりがない場合は上例の名前で鍵を作成して問題ありませんが、所属する組織のルールによってはすでにid_rsaという名前の鍵が作成されている場合もありますので、別途ご確認ください。
Githubへの公開鍵の登録
- 作成した公開鍵を適当なエディタで開き、全選択→コピーする
- Githubを開き「SSH and GPG keys」の設定画面を開く
- Githubの画面右上のユーザーアイコンをクリック
- Settingをクリックし、設定画面に遷移
- 画面左のサブメニューから「SSH and GPG keys」を選択
- 右上の「New SSH key」からSSH鍵登録画面を開く
- Title … 任意でOK。(Githubを登録したときのメアドとかが通例?)
- Key type…デフォルトの「Authentication Key」
- Key … 先ほどコピーした公開鍵をペースト
- 「Add SSH keys」を押下
Gitlabへの公開鍵の登録
- Githubへの登録の手順で登録する
- Gitlabを開き「SSH key」からSSH鍵登録画面を開く
- Gitlabの画面右上のユーザーアイコンをクリック
- Preferencesをクリックし、設定画面に遷移
- 画面左のサブメニューから「SSH keys」を選択
- 画面右上の「Key」に先ほどコピーした公開鍵をペースト
- Title … 任意でOK。(上と同様にGitlabを登録したときのメアドとかが通例?)
- Expiration date … 鍵の有効期限。セキュリティ的には定期的に更新したほうが良いが、空欄でも大丈夫。
- 「Add key」を押下
接続テスト
- 再度.sshディレクトリでGitBashを開く。
- 以下コマンドを実行し、接続テストをする。(Github,Gitlabそれぞれで実行してください)
# 「ssh -T git@」までは共通。@以降ではリポジトリを指定するので、ご利用のプロジェクト・リポジトリ名を入力してください。
$ ssh -T git@repositoryName
- 「Hi!~」「Welcome to Githlab,~」のようなリアクションが表示されたら接続成功
- 「~ : Permission denied (publickey).」と表示されていたら失敗
- @以降でプロジェクト・リポジトリ名を適切に指定できていますか?
- 各種Setting画面でキチンと公開鍵を登録できていますか?(登録完了するとSSH keys の画面に登録済みの鍵が表示されます。)
終わりに
接続テストが完了すればSSH接続は完了です。記事を書くにあたって参考にしたサイトを掲載しますのでご確認ください。
セットアップお疲れ様でした!