Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
29
Help us understand the problem. What is going on with this article?
@satto_sann

WSLでもgitでsshを使いたい

More than 1 year has passed since last update.

背景

WSLで.ssh/configを設定してsshを実行したとき,

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/mnt/c/ubuntu/home/ユーザ/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/mnt/c/ubuntu/home/ユーザ/.ssh/id_rsa": bad permissions
git@ssh.github.com: Permission denied (publickey).

のようなエラーが発生して困ったときのメモ.

状況

WSLにおけるホームディレクトリをデフォルトの"/home/ユーザ名"ではなくwindows側の"/mnt/c/ubuntu/home/ユーザ名"にしている.

解決策

時間がない人は本命解決策2を見てください

解決策1

このようなエラーが出たときはまず最初にchmod 600 ~/.ssh/configとすれば解決する.

しかし,これはホームディレクトリがlinux側の場合のみ有効である.

今回はwindows側にホームディレクトリがあるため,これではだめ.(そもそもwindowsは他の人からアクセスされることを想定していないため,パーミッションとかフルオープン)

本命の解決策2

追記

シンボリックリンクでも解決することがわかったので
後ろの本命の解決策3で解説しています.

  • まず,デフォルト(linux側)のホームディレクトリにいったん移動します.

$ cd /home/ユーザ名

ここで,新しくsshkeyを生成します.(古いやつコピーしても大丈夫だと思いますが,試していません)

  • sshkey生成
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

生成されたsshkeyが以下のディレクトリにあることを確認しましょう
/home/ユーザ名/.ssh/id_rsa

このファイルのパーミッションを確認してみるとしっかり制限されていることがわかります.

$ ls -l /home/ユーザ名/.ssh
total 8
-rw------- 1 ユーザ名 ユーザ名 1675 Oct  6 00:40 id_rsa
-rw-r--r-- 1 ユーザ名 ユーザ名  402 Oct  6 00:40 id_rsa.pub
-rw-r--r-- 1 ユーザ名 ユーザ名  884 Oct  6 00:45 known_hosts
  • githubに生成したid_rsa.pubを登録します.
    ここでは詳細については割愛します.

  • 次に,windows側のホームディレクトリに戻り,
    先程生成したid_rsaの方を読み込めるように~/.bashrc追記します.

~/.bashrc
#SSH
eval `ssh-agent` > /dev/null
ssh-add /home/ユーザ名/.ssh/id_rsa >& /dev/null

ここで> /dev/nullはターミナル起動時にsshkeyが追加されたことお知らせするメッセージを表示しないようにつけました.

あとは,bashrcを再読込するだけでgitのsshが使えるようになっています.

$ source ~/.bashrc

以上です.

本命の解説3

linux側でssh-keyを生成するところまでは一緒です.

変更点は,.bashrcに追加しないでシンボリックリンクを作成する点です.

  • linux側への.sshのシンボリックリンクを作成
$ ln -s /home/ユーザ名/.ssh ~/

このように設定することで勝手にlinux側の.sshを見に行くので今まで通り使えるようになると思います.

29
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
satto_sann
触っている技術:Python, React, Ruby, Go, Docker, k8s, SDN(Trema, Faucet) OSS: FastAPI Contributor
zozotech
70億人のファッションを技術の力で変えていく

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
29
Help us understand the problem. What is going on with this article?