SSHを利用してセキュアにソースコード管理を行うためのSSH接続について、手順をまとめました。
都度調べるのは面倒なので備忘録も兼ねて記事にしました。
目次
- 前提
- .sshディレクトリ作成
- 公開鍵、秘密鍵作成
- 公開鍵をGithubに追加
- configファイル作成
- パーミッション変更
- 接続確認
- 【参考】エラーについて
- 秘密鍵のパーミッションがおかしい
- ssh-add していない
前提
- GitHubアカウントが作成済みであること(およびメール認証済であること)
- Gitがインストール済みであること
- Gitのユーザー名・メールアドレス設定済みであること
.sshディレクトリ作成
.sshディレクトリが存在しない場合、以下コマンドでディレクトリを作成する。
$ mkdir ~/.ssh
公開鍵、秘密鍵作成
特に指定がなければ、Enter3回押せばOK。
任意のファイル名を設定することも可能。(例:id_rsa_projectA)
ファイル名を指定しなければ、id_rsaで作成される。
パスフレーズは設定したほうがより安全だが必須ではない。
$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
公開鍵をGithubに追加
Settings > SSH and GPG keys > SSH keys より、公開鍵を追加する。
Titleは任意のものでOK。
Key TypeはAuthentication keyとする。
Keyに公開鍵の中身を設定する(以下コマンドでコピー可能、ファイルを直接開いてコピーでもOK)。
$ clip < ~/.ssh/id_rsa.pub
configファイル作成
SSH接続の設定を行うファイル。
vimで編集する(メモ帳などテキストエディタでもOK)。
設定項目は好みにより調整する。
複数のアカウントで接続する場合、ホスト名にエイリアスをつけて管理する。
例えば、Host github.com_projectA、Host github.com_projectBなど
Host*に書いたものは全体に反映される共通設定となる。
$ touch ~/.ssh/config
$ vim ~/.ssh/config
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa ## 公開鍵
User git ## ユーザー名
ServerAliveInterval 60 ## タイムアウトする秒数
ServerAliveCountMax 10 ## サーバからの応答確認の最大回数
IdentitiesOnly yes
パーミッション変更
自分以外は操作不可とするため、権限を変更する。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/*
SSHエージェント設定
ssh-agentはSSH認証エージェントで、秘密鍵のパスフレーズを一度入力するだけでその後の接続で再度パスフレーズを入力する必要がなくなる。
ssh-addでSSHエージェントに秘密鍵を追加する。
パスフレーズを設定している場合、パスフレーズの入力が求められる。
$ eval `ssh-agent`
or
$ eval $(ssh-agent -s) ##上のコマンドがエラーになる場合はこれを叩く
$ ssh-add ~/.ssh/id_rsa
接続確認
ここまでできたら、接続できているかを確認する。
$ ssh -T git@github.com
以下が出力されれば、接続完了。
Hi ora-kitaoka! You've successfully authenticated, but GitHub does not provide shell access.
1回目の確認では以下が出力されるが、これはSSHを使用したクライアントがサーバーに接続する際に、 そのサーバーが本当に接続したいサーバーかを念の為確認するものなので、yesでOK。
The authenticity of host 'github.com (20.27.177.113)' can't be established. ED25519 key fingerprint is SHA256:〜 This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])?
【参考】エラーについて
秘密鍵のパーミッションがおかしい
パーミッションが777などになっていると怒られるので、600など適切なパーミッションに修正する。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ssh-add していない
ssh-addすればOK。
Permission denied (publickey).
ご一読いただき、ありがとうございました。
※本記事に関して不明点や不足等あれば、コメントにてご指摘ください。