2019.10.07
講義で必要があっていままで避けていたssh認証でgithubの認証をすることにしたけど滅茶苦茶苦労したのでここにその経緯を書いておこうと思う.
(結局は色んなサイトのまとめになってしまうとは思うけど)
かなり時間がかかったため,記憶と履歴を掘り返しながら書いている.
多少の記憶違いは悪しからず.
発生した条件
- windows10
- openssh ver7.7
はじめにやったこと.
- 鍵をつくる
- 公開鍵をコピーする
- githubに登録する
- configを作成しなおす
基本的なwindowsでの認証鍵の作り方はここを参考に
お前らのSSH Keysの作り方は間違っている
あとここも詳しかった
GitHubでssh接続する手順
1つ目の壁 ~public key登録してるんやが~
で,.sshフォルダにid_rsaとid_rsa.pubを作成し,githubで鍵を登録した.
できたぞ!!とgit clone を実行しようとした
Cloning into 'AAA AAA'...
Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.xxx' to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
あかんかった.
取り敢えずopenssh publickey permission deniedとかで調べているとこの辺が出てくるのでトライしたけど全部結果は変わらなかった
この時調べて出てきたのはこの辺り
- Gitで”Permission denied (publickey).” が出たときのメモ
- git cloneしようとした時でたエラーと戦った話
- 【git エラー解決策】Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. が出た時の解決方法
まあ当たり前だけどよく確認しましょうって話よね.
んで最後にだいたいを実行して接続確認をする.
>>> ssh -T git@github.com
Hi xxxxxxxxx! You've successfully authenticated, but GitHub does not provide shell access.
こいつはうまくいっていた.
けどやっぱりcloneしようとすると失敗する.
更に調べていくと次のワードにぶつかった.
ssh-add, ssh-agent
ソース
新しい SSH キーを生成して ssh-agent に追加する
ssh-agentにkeyを登録しなければならないらしい
よーし光が見えてきたぞ,と実行に移す.
2つめの壁 ~ssh-agentってなんやねん~
そもそもssh-agentないですよって言われた.
なかなか解説が見当たらなくて苦労したけど,そこもひっくるめて簡単に言えば
OpenSSHのバージョンが低かったらしい.
(後から思えば,本当にここが悪かったのかなあ?)
とにかく,ssh-agentとssh-addを使うことができなかった.
状態は
- ssh -T git@github.comは返ってくる.
- sshを用いたgit cloneはpermission denied(public key)のまま
以下のコマンドでssh接続のデバッグ表示もすることができる.
>>> ssh -Tv git@github.com
このデバッグの時に表示されたアラートが,バージョンアップしたら消えたので,OpenSSHの7.7より8.0のがRSAの鍵の強度が高いらしい.
使ってたOpenSSHのバージョン
OpenSSH 7.7p1
入れ直したOpenSSHのバージョン
OpenSSH 8.0p1
OpenSSH DL元
インストールに有用だった参考サイト
Windows Server 2019 および Windows 10 用 OpenSSH のインストール
Windows10にssh-agentをインストール
この辺りからWindowsPowerShellを使って作業し始めた.
やっていることは,
パッケージダウンロード→path設定→powershellでインストールと起動
の流れ.
ここのクライアント側の作業も参考にした
WindowsにOpenSSHをインストールする
バージョンアップして,git_bashを立ち上げ,最後にやったことは以下
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-agent -s
ssh-add ~/.ssh/id_rsa
サイトによっては,二行目をeval $(ssh-agent -s)にすると書いてあるが,win10の場合evalのカッコ内だけ入力すれば大丈夫.
雑多な情報を集めた記事になってしまった.許してほしい....|:3ミ
まとめ
- win10でssh認証をしたい場合
- ssh-keygenで鍵をつくる
- ssh-agentを起動する
- ssh-addに認識させる
- githubに鍵を登録する
という作業が必要.
場合によっては,ssh-addやssh-agentがない場合があるので,その場合は適宜インストール作業する必要がある.
追記
この状態では,端末を閉じるとまたエラーが出るので,
現在,gitbashを起動し,
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
をやり直している.
(今度直そう…)