Gitを使用している際にリモートレポジトリとのやり取りでSSH接続が必要なことってありませんか?
それもそれらをクライアントのGUIツール上(例えばGitHub Desktopの様なアプリなど)からではなく、コマンドライン上で行いたい時って。
Macだったらターミナルだったり、WindowsだったらGit標準ののBash(GitHubのPowerShellではない)という風に。
ここでは同じ環境つまりは同じ端末なのに、SSH接続が出来る時と出来ない時があるパターンとその解決法について説明したいと思います。
- まずは以下のコマンドをターミナルなどで叩く。
ssh git@github.com
すると、SSH接続が上手く行っていない時には以下文言が表示されたりします。
`Permission denied (publickey).`
2. 次に以下のディレクトリを確認します。
/Users/ユーザー名/.ssh
このディレクトリのファイル名が自分の場合は以下の様になっていました。
github_rsa, github_rsa.pub, known_hosts
これらの鍵ファイルはGitHubのGUIクライアントツールを使っていた時に作ったものと思われます。つまりはこれらの鍵ファイルが参照されてないとSSH接続が出来ないということになります。
基本的にはターミナル等でGitを扱おうとすると、デフォルトではid_rsa, id_rsa.pubというものを参照する様になっています。これを解決するには2種類の方法があると考えられます。
・id_rsa鍵を新規作成しGitHubへの登録を行う
・~/.ssh/configファイルへ設定の追加を行う
→SSH鍵の生成の仕方や.sshのconfigファイルへの設定追加の方法などは別記事を参照ください。
※id_rsa鍵を参照しているかどうかは以下のコマンドで確認が可能です。
`ssh -vT git@github.com`
identity fileの箇所にid_rsaを参照していることが確認できるかと思います。
3. 最後に以下のコマンドを叩いて接続が出来ているかどうかを確認します。
`ssh -l git -i ~/.ssh/github_rsa github.com`
以下の内容が表示されれば接続に成功したことになります。
PTY allocation request failed on channel 0
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
MacであればキーチェーンにSSH接続情報を保存することで次回よりパスフレーズ等の入力を省略することが出来ます。