githubやgitLabにSSHのKey作成と接続がよくわからなかったのでそれのまとめ。
前提としてGithubやGitLabのユーザー登録、Gitbash等が入っていることとして話を進めます。
ssh-keygenコマンドを使ってキーを生成します。
ssh-keygen -t rsa -b 4096 -C "メールアドレス"
-t は暗号方式です。 デフォルトでRSA、他にはDSA, ECDSA, ED25519を生成できます。 GitHubやGitLabではRSA(最大16384bit), ECDSA(256,384,521bitのいずれか), ED25519(固定256bit)が対応しています。
暗号キーの強度は、RSA < DSA < ECDSA < ED25519 だそうです
-b はbit数です、ED25519では256bit固定なので入力しても無視されます。
-C はコメントです、SSH keyのタイトルになります。
入力すると次の入力メッセージが出ます
Enter file in which to save the key (/c/Users/ユーザー名/.ssh/id_暗号方式):
これはKeyをどこに保存するか入力するところです。 デフォルトでは個人用ファイルの.sshディレクトリにid_<暗号方式名> で保存されます。 これはディレクトリルートを指定するのではなくファイル名まで指定されているので注意が必要です。(例: /c/ssh/id_rsaの場合C¥:sshにid_rsaというファイル名で保存する)
個人用ファイルの.sshディレクトリ内に保存しないと特定の環境内で使えないことが判明しました。保存するときは ~/.ssh/<ファイル名> に保存してください
あとはパスワードを入力して終了です。(ここで保存場所があっているのにfailed: No such file or directory
と言われた場合はもう一度試してみることをおすすめします)
保存が完了すると指定したところに拡張子のないファイル(秘密鍵)と.pubファイル(公開鍵)が生成されます。
公開鍵のファイル内容をコピーします
clip < 公開鍵のパス
※Linuxなどではclipではなくpbcopyです。
コピーしたらWebからSSH keyを追加します。
GithubではSettings > SSH and GPG keys > New SSH Key
GitLabではSettings > SSH keys に移動し、コピーした公開鍵をペーストし、追加します。
次にConfigファイルを作ります。Configファイルは個人用ファイルの.sshディレクトリに入れなければいけません。
これを作らなくても接続確認はできますがgitコマンドを使ってSSH接続する際に接続できないため必要です。
作る際は viコマンドを使うことをおすすめします。エクスプローラーからconfig(拡張子なし)を作ってメモ帳で~となるとめんどくさいので...
vi ~/.ssh/config
実行するとテキストエディターが開くと思います。使い方を知らない方のために説明するとaを押すと入力モードに入ります、終わる場合はESC、保存して終了する場合は:qw、保存せずに終了する場合は:q!です。
GitLabを例にconfigを書こうと思います。
Host gitlab.com
HostName gitlab.com
IdentityFile 秘密鍵のパス
User git
Githubの場合はgitlab.comをgithub.comにすれば大丈夫です。
sshコマンドを使って接続テストをします
ssh -T gitlab.com(github.com)
これを実行して接続できれば完了です。