SSHキー発行からGithubSSHキーの設定まで(mac環境)
SSHについて
事前に公開鍵をサーバー側に配置しておき、ログイン時の認証処理において、ローカルに配置された秘密鍵と照合して本人確認する。
SSHを利用すれば、クラウドサーバー等にログインしてコマンドを実行して操作することが可能になる。
認証方式が甘いと簡単に不正アクセスされてしまう。
公開鍵認証のポイント
- 認証に必要な秘密情報そのものはネットワーク上に送出されない
- 認証に使われる署名は一時的なもので再利用はできない
- 秘密鍵を推測して偽造することは非常に困難
- パスフーレーズを設定して鍵そのものをロックすることができる
SSHキーの確認
ターミナルを開いてls -al ~/.ssh
を入力して、既存のSSHキーが存在するかどうか確認する。
ディレクトリの一覧から、公開SSHキーをすでに持っているか確認する。
GitHubでサポートされている公開キーのファイル名
- id_rsa.pub
- id_ecdsa.pub
- id_ed25519.pub
新しいSSHキーを生成するか、既存のキーをアップロードする
新しいSSHキーを生成する
ターミナルを開いて以下のコマンドを実行する
ssh-keygen -t ed25519 -C "your_email_address"
以下のプロンプトが表示されたらパスフレーズを入力する
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
SSHキーをssh-agentに追加して、パスフレーズをキーチェーンに保存する
何度も認証が必要になるような環境だと、パスフレーズの入力が大きなストレスになる。ssh-agentを起動して秘密鍵を登録しておけば、sshコマンドを実行した際に自動的に秘密鍵を適用して認証処理を行なってくれる。パスフレーズの入力は、秘密鍵の登録時に一度行うだけで済む。
バックグラウンドでssh-agentを開始する
eval "$(ssh-agent -s)"
~/.ssh/config
ファイルを編集する
# common
Host *
AddKeysToAgent yes
UseKeychain yes
# github
Host github
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/id_ed25519
SSH 秘密鍵を ssh-agent に追加して、パスフレーズをキーチェーンに保存
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
GitHub で自分のアカウントに SSH 公開キーを追加する
GitHubに登録してある公開鍵をauthorized_keysに追加する
curl https://github.com/${GITHUB_ACCOUNT_NAME}.keys >> ~/.ssh/authorized_keys
ssh配下のアクセス権限の設定
chmod 700 ~/.ssh #ファイル又はディレクトリ所有者へすべてのアクセス権限を与える drwx------
chmod 600 ~/.ssh/id_ed25519 #ファイル又はディレクトリ所有者へ書き込み・読み込みのアクセス権限を与える -rw-------
chmod 600 ~/.ssh/authorized_keys #-rw-------
ls -la ~/.ssh #権限の確認
確認及び接続テスト
キーの確認
cat ~/.ssh/id_ed25519.pub
接続テスト
ssh -T git@github.com
以下のように選択してメッセージが表示されれば成功
Are you sure you want to continue connecting (yes/no)? → yes
Hi USERNAME! You've successfully authenticated, but GitHub does not
provide shell access. → OK