ssh menggunakan direktori home yang salah di Cygwin

12
$ ssh [email protected]

Could not create directory'/cygdrive/c/Documents and Settings/vidar kongsli/.ssh'.
The authenticity of host 'login.somehost.no (...)' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.

$ set | grep HOME

HOME=/cygdrive/d/home/vidar
HOMEDRIVE=C:
HOMEPATH=/cygdrive/d/home/vidar

$ ls ~/.ssh

id_rsa  id_rsa.pub

Adakah ide mengapa ssh tidak menggunakan variabel lingkungan $ HOME ketika mencoba mencari ~ / .ssh?

(edit: pemformatan tetap)


sumber

Jawaban:

9

Lihatlah /etc/passwd. Pastikan entri di sana sesuai dengan direktori home yang Anda harapkan. Ini adalah bidang kedua ke terakhir untuk entri pengguna Anda.

Ronald Blaschke
sumber
4

Jika $HOMEvariabel Anda diset, tetapi ssh tidak mengenalinya, masukkan baris ini di /etc/nsswitch.conf:

db_home: /%H

Itu akan mengatur direktori home Cygwin tanpa memerlukan file / etc / passwd.

Oliver Crow
sumber
Aku telah menetapkan HOMEuntuk %USERPROFIEL%di variabel lingkungan sebelum cygwin diinstal. Jadi ... / home / <myusername> belum dibuat ( /etc/passwd cannot be found). Dan tidak dapat menggunakan kunci ssh di% USERPROFILE%. db_home: /%Hmemperbaiki masalah dengan sempurna. Terima kasih banyak!
Marslo
2

Di /etc/nsswitch.conf:

db_home:  windows

Lihat Pengaturan db_home . Ini memberitahu Cygwin untuk hanya menggunakan %USERPROFILE%direktori Windows sebagai Cygwin $ HOME.

Ini diperlukan jika, misalnya, Anda ingin berbagi kunci SSH yang sama antara git (GitHub Enterprise) dan SSH ke berbagai sistem Unix / Linux lokal.

Pengaturan %HOME%pada level OS tidak bekerja (meskipun $HOMEdalam bash dengan benar mencerminkan pengaturan).

Anda dapat melihat dari pertanyaan awal bahwa SSH berusaha memperbarui direktori home Windows, yang dalam versi Windows Vidar yang lebih lama C:\Documents and Settings\vidar kongsli. Dalam versi saat ini (7+, saya pikir), padanannya adalah C:\Users\%USERNAME%(atau, jika Windows tidak diinstal pada C :, %SystemDrive%\Users\%USERNAME%).

Charlie Reitzel
sumber
0

Apakah variabel HOMEdiekspor? Coba: export HOMEsekali sshlagi.

Greg Hewgill
sumber
0

Set db_homedi /etc/nsswitch.confke jalan ke rumah Anda. Ini adalah metode yang direkomendasikan oleh MSYS2.

Menambahkan HOMEvariabel lingkungan juga berfungsi .

Git-for-Windows termasuk envdalam db_home, yang seharusnya membaca HOMEvariabel bash Anda , namun itu tidak dapat diandalkan .

VarunAgw
sumber
1
Mengedit bagaimana? Apa yang Anda tetapkan db_home?
Andrew Schulman
@AndrewSchulman Ke direktori yang saya inginkan sebagai direktori rumah saya?
VarunAgw
1
Wow! Ini banyak informasi bermanfaat. Terima kasih telah menyunting @ go2null :)
VarunAgw
Jawaban ini sebenarnya tidak mencantumkan apa yang direkomendasikan oleh bug tertaut "direkomendasikan". Bug yang terhubung mengatakan:db_home: windows cygwin desc
Gordon