見出し画像

Git Hubでssh接続する手順〜公開鍵・秘密鍵の生成から


GitHunbにsshs接続するために鍵の登録が必要になる。
その手順をまとめる。

初めての手順通りに進めれば接続できる。
公開鍵暗号での認証には公開鍵地秘密鍵が必要になる。
その手順。

公開鍵・秘密鍵を作成する

公開鍵暗号での認証には秘密鍵が必要になる。
秘密鍵は、秘密というだけあって他の人に見られてはいけない。つまり何処かに送信してはいけない。公開鍵はOK。
秘密鍵は、自分で保持し、公開鍵は相手(ここではGitHub)に送る。
まずは、公開鍵と秘密鍵のペアを生成する。

鍵を入れるフォルダに移動する。
$cd ~/.ssh

初めて鍵を生成する時は何も入っていないはず。
次のコマンドで鍵を生成する。


$ssh-keygen -t 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:

何か聞かれたら三回エンターを押す。
is_rsaとid_/rsa.pubの二つの鍵が生成される。
なお、2回目、3回目のパラフレーズの設定(パスワード設定のようなもの)ですが、ここはなくてOK。(慣れてきたらパラフレーズの設定もありだが、
なくてもいい)

既にis_rsaが存在する人は、上書きされてしまうので注意。
違う名前で生成したい時は、

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):id_git_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:


一回目で聞かれたタイミングで名前(ここではid_git_rsa)を指定。
あとは、エンターで、id_git_rsaとgit_rsa.pubが生成される。

ちなみに、名前を指定しない場合は、勝手に~/.ssh内に鍵を生成してているが、上記のように名前を指定する時は、~/.ssh内にいないとこの中に生成してくれないので注意。

公開鍵をGitHubにアップする。
で公開鍵が設定ができる。


画面右上の「Add SSH key」のボタンを押す。

なお、鍵の中身のクリップボードへのコピーは
$ pbcopy < ~/.ssh/id_rsa.pub (Mac)
鍵の名前は自分の作成したもの。


接続を確かめる。

$ ssh -T git@github.com
で返ってきたら接続完了!
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.

しかし、
鍵を作る時は名前を指定していれば、うまく行かないかもしれない。
それは、ssh接続の際「~/.ssh/id_rsa」、「~/.ssh/id_dsa」、「~/.ssh/identity」しかデフォルトでは見にいかないからです。
それに対応するためには
~/.ssh/configを作成しその中に

Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_git_rsa #ここに自分の鍵のファイル名
User git
を作成する。
これで、もう一つ接続をやってみるとうまくいくはず。
以下のようにコマンドを打って確かめてみる。

ssh -T github

githubとやりとりする

GitHubと実際にやり取りする時にID・パスワードを聞かれる時にssh接続がうまくいっていない。
レポジトリのディレクトリに入り

git config remote.origin.url
で確認し https://github.com/[ユーザID]/[リポジトリ] となっていたら

git remote set-url origin git@github.com:[ユーザID]/[リポジトリ].git
とする。

~/.ssh/configで設定している場合は
git remote set-url origin [Host名]:[ユーザID]/[リポジトリ].git

[Host名]とは~.ssh/configの1行目のHostの名前(ここまではgithub)のこと
ちなみに、この設定はレポジトリのディレクトリ内の/.git/configで設定できる。

[追記]
上記「GitHubとやりとりする」でssh接続について設定するのは面倒で
~/.gitconfig
[url "github:"]
InsteadOf = https://github.com/
InsteadOf = git@github.com:
を追記してあげれば解決でした。
ちなみにpushInsteadOfを使うとpushだけに適用出来るようです。

この記事が気に入ったらサポートをしてみませんか?