Saya memiliki Windows 10 dengan Git diinstal. Git ini menggunakan C:/Users/MyName
dir saya sebagai direktori HOME dan /.ssh/
dir dalam, tepat untuk sumber kunci SSH pribadi saya.
Saya baru saja mengaktifkan dan mengatur "Bash di Ubuntu pada Windows" (sungguh seteguk!) Dan menginstal Git di dalamnya. Saya ingin kedua Gits menggunakan set kunci yang sama sehingga tidak peduli lingkungan tempat saya bekerja di mesin ini, komit saya akan selalu datang dari saya.
Masalahnya adalah bahwa direktori HOME di bash berbeda ( /home/MyName
) dan karenanya ia tidak melihat kunci yang terletak di jarak yang sekarang ../../mnt/c/Users/MyName/.ssh
. Saya pikir saya akan menjadi pemenang dengan mengubah variabel lingkungan HOME menggunakan
export HOME=/c/mnt/Users/MyName
Ini memang berhasil mengubah direktori HOME tetapi bash git masih tidak melihat kunci yang terkandung di dalam ./.ssh
direktori tersebut.
Saya tidak yakin apakah ini A) karena bash git mengharapkan kunci dalam format file yang berbeda? (yang sekarang id_rsa
dan id_rsa.pub
) B) bash git mengabaikan variabel HOME yang diubah? Atau mungkin keduanya.
Saya juga tidak yakin C) jika sewenang-wenang mengubah variabel HOME seperti ini adalah ide yang baik pada umumnya wrt program lain yang mungkin merujuknya?
.ssh
sudah ada di/home/MyName
... bisakah satu file symlink? sedemikian rupa sehingga saya akan lakukanln -s /mnt/c/Users/MyName/.ssh/id_rsa /.ssh/id_rsa
? (juga baru untuk symlinking!).ssh
direktori.Jawaban:
Jadi seperti Telastyn berkomentar saya menambahkan symlinks di WSLs
~/.ssh/
ke id_rsa dan id_rsa.pub menggunakan:Menggunakan teknik yang sama untuk bukannya menautkan direktori symlink seperti yang disarankan oleh tripleee, saya memiliki masalah sampai saya melihat bahwa garis miring yang saya gunakan dalam
ln
perintah (kiri dari menggunakan tombol tab untuk memiliki bash mengisi nama direktori) adalah masalah. Jadi, alih-alih melakukan hal di atas, lebih baik melakukannya:File known_hosts sedikit berbeda antara saya menggunakannya (git in PowerShell menggunakan ssh-agent) di Windows dan SSH menggunakannya di WSL, di mana nama host dan IP tidak hash dalam versi Windows. Menurut halaman manual untuk ssh-config, ada flag yang tersedia untuk menonaktifkan hashing ini yang saya maksud SSH akan mengerti file tanpa hashing yang telah bekerja sejauh ini.
Metode yang terakhir ini berarti bahwa rincian yang digunakan untuk SSH yang digunakan antara dua lingkungan yang berbeda persis sama.
Terima kasih kepada Matěj Kříž karena menunjukkan karakter kecil yang hilang tetapi vital!
sumber
> ln -s /mnt/c/Users/MyName/.ssh/id_rsa ~/.ssh/id_rsa
ditambahkan "~". Nggak?private keys
daribash on windows
jika ada yang membuats link
antara direktori. Melakukan hal itu akan menyebabkanssh agent
pengaduan tentang izin buruk pada file kunci pribadi. Karena file dipasang dari jendela, izin mereka tidak dapat diubah.Berdasarkan build baru, izin "Insider Build 17063" untuk file berfungsi berbeda sekarang. Singkatnya yang perlu Anda lakukan:
Ini akan membuat izin untuk folder ssh Anda berfungsi sesuai kebutuhan. Kemudian diproses sesuai saran OP dalam jawabannya.
Tautan yang relevan:
https://github.com/Microsoft/WSL/issues/3181 https://blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
EDIT
Saya kembali ke pertanyaan ini karena saya tahu ini hanya solusi sementara (ya saya bodoh). Setiap kali Anda me-restart (logout) WSL Anda, Anda harus melemparkan perintah ini lagi.
Jadi solusi yang bekerja untuk saya sekarang adalah mengedit (membuat) file konfigurasi
/etc/wsl.conf
di ubuntu wsl saya, dan memasukkannya ke dalam, kemudian restart untuk melakukan mounts lagi:Mengapa saya menambahkan metadata:
Mengapa mengatur uid dan gid:
Tautan yang relevan:
https://docs.microsoft.com/en-us/windows/wsl/wsl-config https://blogs.msdn.microsoft.com/commandline/2018/02/07/automatically-configuring-wsl/ https: / /blogs.msdn.microsoft.com/commandline/2018/01/12/chmod-chown-wsl-improvements/
sumber