リンク
やること@GitHub参照ページ
- GitHubにSSHで接続する
- 新しいSSHキーを生成してssh-agentに追加する
ssh-keygen
叩いて鍵生成。ssh-add
はやらなかったので「ssh-agent」に追加するの所はやってない。
- GitHubアカウントに新しいSSHキーを追加する
- キーの追加自体はすぐできた。
clip < 鍵.pub
コマンドでコピペした方が良いらしい。
- SSH接続のテスト
- ここが何度かハマった。(詳細後述)
- 新しいSSHキーを生成してssh-agentに追加する
参考ページ
プレースホルダ
本記事内ではこれらの情報をプレースホルダで置換してるので、よしなに読み替えてくだしあ。
{user-name}
{host-name}
{ssh-key-name}
{my-fingerprint}
SSH鍵生成
後から知ったけど id_xxx
って名前にしといたほうが良かったらしい。
名前が id_xxx
形式になってないと ssh -i
オプションで明示的に秘密鍵ファイルを指定する必要があるらしい。
ssh-keygen
このコマンドで、SSH接続のときに使用する 秘密鍵/公開鍵のペア を生成し、それぞれファイルに保存する。
C:\Users\{user-name}>ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\{user-name}/.ssh/id_rsa): {ssh-key-name} Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in {ssh-key-name}. Your public key has been saved in {ssh-key-name}.pub. The key fingerprint is: SHA256:{my-fingerprint} {user-name}@{host-name} The key's randomart image is: +---[RSA 2048]----+ | .o+o | # 省略 | .+. .. | +----[SHA256]-----+
GitHubにSSH公開鍵を設定しにいく
概ね手順通りなので特に書く事ないけど、ざっくり以下の手順。
- GitHubにログインする
- ユーザアイコン(アカウントメニュー?)をクリックして
Settings
を選択。 - Personal settings メニュー画面になるので
SSH and GPG keys
を選択。 New SSH Key
を選択。- 鍵の名前を入力し、公開鍵情報をコピペ。
- 公開鍵のコピペでは、前述の通り
clip < {ssh-key-name}.pub
でやった方が良いらしい。
SSH接続実験
ssh -T
C:\Users\{user-name}\.ssh>ssh -T git@github.com The authenticity of host 'github.com (52.69.186.44)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)?
y
怒られた。
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
yes/no
で答えろって怒られた。
yes
改めて。
Warning: Permanently added 'github.com,52.69.186.44' (RSA) to the list of known hosts. git@github.com: Permission denied (publickey).
よくわからんが、権限で弾かれた模様。
※ このときは理解してなかったけど、 そもそも -i
オプションで正しい鍵を指定してない ので、それもNGだったっぽい。
いろいろ調べてリベンジ。
error @bash
{user-name}@{host-name}:/mnt/c/Users/{user-name}/.ssh$ ssh -i {ssh-key-name} -T git@github.com
こんなエラーが出た。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0777 for '{ssh-key-name}' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "{ssh-key-name}": bad permissions git@github.com: Permission denied (publickey).
Permissions 0777 for x are too open
つってる。
なんか権限が 0777
だと権限開放しすぎらしい。
調べたところ 0600
にすれば動くらしいが、そもそも chmod
が効かなかった。
謎。
ssh -i -T
C:\Users\{user-name}>cd .ssh C:\Users\{user-name}\.ssh>ssh -i {ssh-key-name} -T git@github.com Warning: Permanently added the RSA host key for IP address '13.114.40.48' to the list of known hosts. Hi {user-name}! You've successfully authenticated, but GitHub does not provide shell access.
最終的にこれで接続は出来たっぽい。
ssh -i {ssh-key-name} -T git@github.com
sudo ssh @bash
良いのか悪いのかわからんけど須藤さんでssh叩いたら出来た。
{user-name}@{host-name}:/mnt/c/Users/{user-name}/.ssh$ sudo ssh -i {ssh-key-name} -T git@github.com Hi sugaryo! You've successfully authenticated, but GitHub does not provide shell access.
取り敢えずSSH接続は成功した模様。
SourceTreeでのSSH設定
リモートリポジトリのURLをHTTPSからSSHに変更。
GitHubの任意のリポジトリに入って Clone or download
から Clone with SSH Use a password protected SSH key.
の方を選択。
git@github.com:account-id/repository.git
形式のアレになってる筈なので、これをコピー。
SourceTreeのリポジトリ設定を変更。
- SourceTreeのメニュー右上
設定
からリポジトリ設定
を開く。 リモートリポジトリのパス
ってのがある筈で、既存の接続設定を選択して編集
をクリック。URL/パス
がHTTPS接続のものになってる筈なので、SSH接続のものに書き換える。
(git@github.com:account-id/repository.git
形式のアレね)
SourceTreeに秘密鍵を設定。
ここが案外困った。
メニューバー > ツール > オプション
を開く。全般
の中にSSHクライアントの設定
って所があるので、ここを書き換える。
これでプッシュするときちんとプッシュ出来た。 恐らくSSH接続できている事でしょう。(たぶん)
同じくメニューの所に ツール > SSHキーを追加
ってあるから、最初はてっきりここから設定するもんかと思ったけど、こっちじゃなかった。
逆に、最初から ssh-keygen
とかのコマンドを使わずにやる場合は、SourceTreeに搭載されてるツールでSSHキーの生成・設定なんかが出来るっぽいけど触ってないから良くわかんね。