GitHub に SSH 接続してリモートリポジトリからサーバーにプロジェクトをクローンしようとしたら SSH 接続のところでハマったのでメモを残しておきます。
環境
Linux(CentOS9)
うまく行った手順
/home/[ユーザー]/.ssh へ移動します。(.sshがなければディレクトリを作成)
.sshディレクトリの所有者がrootになっていると面倒なので、その場合は自分のユーザーで作り直します。
下記コマンドで、秘密鍵と公開鍵を生成する。
rsa_GitHubは、任意のファイル名で大丈夫です。
パスワードは空白でもOK。
ssh-keygen -t rsa -b 4096 -f rsa_GitHub
こう表示されたらOK
.pub が付いているほうが公開鍵で付いていないほうが秘密鍵です。
公開鍵の方は、鍵というより南京錠のような鍵穴をイメージするほうがわかりやすいです。
公開鍵(.pubの方)の中身をコピーしてGitHubのSetting > Deploy keysの設定で貼り付けます。
下のように表示されればOK。
下記コマンドで.sshディレクトリにconfigファイルを作成し、編集します。
vi config
下記コマンドで SSH 接続のテスト
ssh -T git@github.com
「You've successfully authenticated, ~」と出たらテスト成功。
下記コマンドで GitHub からクローンできます。
git clone [githubのSSHのURL]
URL は GitHub から下の箇所から取得します。
つまづいた点
.sshディレクトリがrootユーザーになっていたので、.sshの中で鍵を生成しようとすると自分のユーザーで作れなくて煩雑になっていました。
プロジェクトが複数ある場合
プロジェクトがフロントエンドとバックエンドで分かれている場合などは、鍵をそれぞれで作ってconfigで以下のようにすると、それぞれでSSH認証を分けられます
Host github-front
HostName github.com
User git
IdentityFile /home/[ユーザー名]/.ssh/[フロントエンドの秘密鍵]
Host github-server
HostName github.com
User git
IdentityFile /home/[ユーザー名]/.ssh/[バックエンドの秘密鍵]
GitHubに公開鍵をそれぞれ登録して、以下のようにgithub.comだった箇所をgithub-frontのように変更すると成功します。
ssh -T git@github-front
終わり
久しぶりのインフラ構築で手間がかかりましたが、これでGitでデプロイができるようになって作業が楽になりますね。