Untuk mereka yang menggunakan Cygwin 1.7.34 atau lebih tinggi, gunakan metode yang dijelaskan di posting lain, tetapi jangan lupa untuk menghapus # sebelum membatalkan db_home:kutipan dan membuatnya berfungsi.
Maieul
Jawaban:
180
Dimulai dengan Cygwin 1.7.34 , cara yang disarankan untuk melakukannya adalah dengan menambahkan db_homepengaturan khusus ke /etc/nsswitch.conf. Keinginan umum saat melakukan ini adalah membuat direktori home Cygwin Anda sama dengan direktori profil pengguna Windows Anda. Pengaturan ini akan melakukannya:
db_home: windows
Atau, dengan kata lain:
db_home: /%H
Anda perlu menggunakan formulir terakhir jika Anda menginginkan variasi pada skema ini, seperti memisahkan file home Cygwin Anda ke dalam subdirektori dari direktori profil pengguna Windows Anda:
db_home: /%H/cygwin
Ada beberapa skema alternatif lain untuk windowsopsi tersebut ditambah beberapa %token lain yang dapat Anda gunakan sebagai pengganti %Hatau sebagai tambahan. Lihat yang nsswitch.confdeskripsi sintaks di Cygwin Panduan Pengguna untuk rincian.
Jika Anda menginstal Cygwin sebelum 1.7.34 atau telah menjalankan mkpasswdutilitasnya sehingga Anda memiliki /etc/passwdfile, Anda dapat mengubah direktori home Cygwin Anda dengan mengedit entri pengguna Anda di file itu. Direktori beranda Anda adalah elemen kedua hingga terakhir pada baris pengguna Anda di /etc/passwd.¹
Apa pun cara Anda melakukannya, ini menyebabkan HOMEvariabel lingkungan disetel selama startup shell.²
Lihat item FAQ ini untuk mengetahui lebih lanjut tentang topik tersebut.
Catatan kaki:
Pertimbangkan bergerak /etc/passwddan /etc/groupkeluar dari jalan untuk menggunakan SAM baru / mekanisme berbasis AD sebagai gantinya.
Meskipun dimungkinkan untuk hanya mengatur %HOME%melalui Panel Kontrol, secara resmi tidak disarankan . Tidak hanya menggantikan mekanisme di atas begitu saja, itu tidak selalu berfungsi, seperti saat menjalankan skrip shell melalui cron.
Perhatikan bahwa jika Anda menginstal Git bash shell dari git-scm.com/download/win , Anda mungkin mengalami masalah dengan instalasi cygwin (bergantung pada opsi yang Anda pilih). Cygwin ~ saya berakhir di direktori pengguna Win7 saya dan sshtidak akan berfungsi dengan benar sampai pengeditan /etc/passwdseperti yang dijelaskan.
Allan
Masalah yang disebutkan @Allan di sini dengan penginstalan git diatasi dengan menyetel variabel lingkungan Windows untuk HOME dan kemudian membuat ulang /etc/passwdfile tersebut. Lihat jawaban saya di sini untuk menghindari masalah seperti itu.
Christopher
11
db_home: /%Hmungkin menyelesaikan untuk nama pengguna domain (bukan nama pengguna lokal), yang mungkin bukan yang Anda inginkan. db_home: /cygdrive/c/Users/%Umelakukan apa yang saya inginkan.
Abdull
2
Saya melihat perbedaan kinerja antara berbagai metode. Saat saya gunakan db_home: windows, dibutuhkan shsekitar 2,5 hingga 3,5 detik untuk memulai. Saat saya menggunakan db_home: /cygdrive/c/Users/%U, dibutuhkan shsekitar 0,9 hingga 1,0 detik untuk memulai. Ketika saya menghapus db_homebaris atau kode keras ke direktori home Windows, shmembutuhkan waktu sekitar 0,2 hingga 0,3 detik untuk memulai. Saya akan menggunakan solusi hard-coded, misalnya db_home: /cygdrive/c/Users/susam, karena saya sering menjalankan skrip shell dari Command Prompt menggunakan shperintah, misalnya sh foo.shdan menunggu lebih dari 2 detik menjadi tidak nyaman.
Susam Pal
1
Terima kasih @abdull, db_home: / cygdrive / c / Users /% U adalah jawaban yang saya butuhkan. db_home: windows menggunakan "/ home /% U", yang tidak ada di konfigurasi saya.
Jeff
74
Cygwin 1.7.34+
Bagi mereka yang menggunakan Cygwin 1.7.34 atau lebih tinggi, Cygwin mendukung konfigurasi cara mengambil direktori home, shell login, dan informasi gecos di /etc/nsswitch.conf. Ini dirinci di bagian Panduan Pengguna Cygwin:
Jika sebelumnya Anda telah membuat file /etc/passwdatau, /etc/groupAnda ingin menghapusnya dan mengkonfigurasi Cygwin menggunakan model Keamanan Windows baru untuk pemetaan POSIX.
Pengaturan /etc/nsswitch.conffile db_home:menentukan bagaimana Cygwin mengambil direktori home pengguna. Pengaturan default untuk db_home:adalah
db_home: /home/%U
Jadi secara default, Cygwin hanya menyetel direktori home ke /home/$USERNAME. Anda dapat mengubahnya meskipun untuk menunjuk ke jalur kustom lain yang Anda inginkan. Karakter wildcard yang didukung adalah:
%u Nama pengguna Cygwin (huruf kecil u).
%U Nama pengguna Windows (huruf besar U).
%D Domain Windows dalam gaya NetBIOS.
%HDirektori beranda Windows dengan gaya POSIX. Perhatikan bahwa, untuk db_home:pengaturan, ini hanya masuk akal tepat setelah garis miring sebelumnya, seperti padadb_home: /%H/cygwin
%_Karena spasi dan karakter TAB digunakan untuk memisahkan skema, spasi dalam nama file harus diberikan sebagai %_(itu garis bawah).
%% Karakter persen.
Sebagai ganti jalur, Anda bisa menentukan salah satu dari empat skema jalur bernama yang sudah ditentukan sebelumnya.
windowsDirektori home pengguna diatur ke direktori yang sama yang digunakan sebagai direktori home Windows, biasanya sesuatu di sepanjang baris %USERPROFILE%atau C:\Users\$USERNAME. Tentu saja, direktori Windows diubah menjadi gaya POSIX oleh Cygwin.
cygwinHanya AD: Direktori home pengguna disetel ke jalur POSIX yang diberikan dalam atribut cygwinHome dari kelas bantu cygwinUser. Lihat juga bagian bernama "The cygwin schema" .
unixHanya IKLAN: Direktori beranda pengguna disetel ke jalur POSIX yang diberikan dalam atribut unixHomeDirectory dari kelas tambahan posixAccount. Lihat juga bagian yang disebut "Skema unix" .
descDirektori beranda pengguna disetel ke jalur POSIX yang diberikan dalam setelan mirip-XML home = "..." di atribut deskripsi pengguna di SAM atau AD. Lihat bagian bernama "The desc schema" untuk penjelasan mendetail.
Berikut ini akan membuat direktori home pengguna di Cygwin sama dengan yang digunakan untuk direktori home Windows.
db_home: windows
Cygwin 1.7.33 atau yang lebih lama
Bagi mereka yang menggunakan Cygwin 1.7.33 atau sebelumnya, perbarui ke versi terbaru Cygwin dan hapus file /etc/passwddan yang sebelumnya digunakan /etc/group, kemudian lihat langkah-langkah di atas.
Lain, ikuti langkah-langkah lama di bawah ini.
Pertama, tetapkan variabel lingkungan Windows untuk HOME yang mengarah ke profil pengguna Anda:
Buka Sistem di Panel Kontrol
Pada tab Advanced , klik Variabel Lingkungan (mengarah ke bawah)
Di area Variabel Pengguna, klik "Baru…"
Untuk nama Variabel masukkan HOME
Untuk nilai Variabel masukkan %USERPROFILE%
Klik OK di semua kotak dialog yang terbuka untuk menerapkan pengaturan baru ini
Sekarang kita akan memperbarui /etc/passwdfile Cygwin dengan %HOME%variabel Windows yang baru kita buat. Shell login dan remote login via sshakan mengandalkan /etc/passwduntuk memberi tahu mereka lokasi jalur pengguna $HOME.
Pada prompt perintah Cygwin bash ketik yang berikut ini:
The -dberalih memberitahu mkpasswd untuk memasukkan pengguna DOMAIN, sementara -luntuk pengguna mesin LOKAL hanya output. Ini penting jika Anda menggunakan PC di tempat kerja tempat informasi pengguna diperoleh dari Pengontrol Domain Windows.
Sekarang, Anda juga dapat melakukan hal yang sama untuk grup, meskipun ini tidak perlu kecuali Anda akan menggunakan komputer yang merupakan bagian dari Domain Windows. Cygwin membaca informasi grup dari database akun Windows, tetapi Anda dapat menambahkan /etc/groupfile jika komputer Anda sering terputus dari Kontroler Domainnya.
Sekarang, keluar dari Cygwin dan mulai lagi. Anda harus menemukan bahwa jalur HOME Anda menunjuk ke lokasi yang sama dengan Profil Pengguna Windows Anda - yaitu/cygdrive/c/Users/username
Ben benar, Anda bisa menambahkan entri untuk pengguna saat ini dengan menentukan -c. Jika Anda melakukannya, Cygwin akan menampilkan ????? untuk Pengguna dan Grup saat membuat daftar file di sistem file bersama, karena tidak akan memiliki catatan untuk pengguna dan grup lain di Domain atau komputer lokal Anda.
Christopher
1
Dapatkah saya menyarankan perubahan kecil pada kata-kata: daripada 'Sekarang, perbarui file Cygwin / etc / passwd Anda dengan jalur $ HOME baru', saya sarankan 'Sekarang kita akan memperbarui file Cygwin / etc / passwd dengan Variabel HOME baru saja kita buat. ' Terima kasih banyak
Robert
Dengan -d Butuh beberapa menit (saya telah membunuh setelah 5) menit untuk menyelesaikannya. Jadi saya telah menjalankan ulang dengan -c. Semua baik untuk kebutuhan saya.
bartosz.r
1
@Samuel Saya telah menambahkan penjelasan untuk memperjelas tujuan di mkgroupatas.
Christopher
30
Saya melakukan sesuatu yang sangat sederhana. Saya tidak ingin mengubah variabel lingkungan windows 7. Jadi saya langsung mengedit file Cygwin.bat.
@echo off
SETLOCAL
set HOME=C:\path\to\home
C:
chdir C:\apps\cygwin\bin
bash --login -i
ENDLOCAL
Ini baru memulai shell lokal dengan direktori home ini; itulah yang saya inginkan. Saya tidak akan mengakses ini dari jarak jauh, jadi ini berhasil untuk saya.
Kedua ini karena saya tidak dapat mengubah variabel lingkungan rumah saya di mesin dev saya.
Deqing
@WernerCD Saya hanya akan memperingatkan bahwa ini dapat memiliki konsekuensi yang tidak diinginkan saat berinteraksi dengan aplikasi Windows asli. Aplikasi Windows Anda akan terus mencari HOME di lokasi lama. Contohnya adalah Gvim, yang akan mempertahankan konfigurasi vim terpisah di %HOME%lokasi Windows lama , sementara Cygwin vim menggunakan $HOMEjalur baru yang Anda nyatakan.
Christopher
Ini luar biasa ... 5 tahun kemudian dan saya menyukainya karena "rekayasa" cukup sederhana untuk digunakan dan dipahami oleh seorang Cygwin relatif newb (seperti saya). Secara tidak sengaja, menempatkan pintasan ke file .bat Anda di C: \ Users \ <your_user_name> \ AppData \ Roaming \ Microsoft \ Windows \ SendTo berarti Anda dapat membuka Send -> Cygwin pada menu konteks-sensitif (klik kanan) di Explorer (dan buka terminal di mana saja, dengan ~ / set dimanapun Anda inginkan).
mike rodent
19
Cygwin mountsekarang mendukung metode bind yang memungkinkan Anda memasang direktori. Karenanya Anda cukup menambahkan baris berikut ke /etc/fstab, lalu restart shell Anda:
Ini akan mengubah variabel lingkungan HOME Anda untuk semua aplikasi Windows Anda juga.
mafia
Sangat benar. Tetapi aplikasi Windows apa yang Anda miliki yang menggunakan variabel HOME? Saya memiliki EmacsW32 dan .... Cygwin. Sejak saya menginstal Emacs terlebih dahulu, di situlah letak rumah cygwin saya juga.
Michael Paulukonis
1
Bukankah ini akan bertentangan dengan / etc / passwd? Akankah default ke / etc / passwd's HOME jika variabel lingkungan tidak disetel? Jika tidak ada konflik dan itu akan default ke / etc / passwd, sepertinya pengaturan yang sempurna: Saya menjalankan Cygwin dari thumbdrive, keduanya untuk menghindari keharusan meminta izin untuk menginstal di tempat kerja, jadi saya memiliki Unix- seperti lingkungan di saku saya yang dapat saya gunakan ketika hanya kotak Windows yang tersedia. Di tempat kerja saya akan memiliki direktori home komputer kerja saya, dan di tempat lain saya dapat memiliki direktori home di thumbdrive.
iconoclast
6
Saya ingin menambahkan koreksi / pembaruan sedikit tentang $ HOME yang diutamakan. Direktori home di / etc / passwd didahulukan dari segalanya.
Saya adalah pengguna Cygwin lama dan saya baru saja menginstal Windows 7 x64 dan Cygwin V1.126 dengan bersih. Saya menjadi gila mencoba mencari tahu mengapa setiap kali saya berlari ssh saya terus mendapatkan:
e:\>ssh foo.bar.com
Could not create directory '/home/dhaynes/.ssh'.
The authenticity of host 'foo.bar.com (10.66.19.19)' can't be established.
...
Saya menambahkan definisi HOME = c: \ users \ dhaynes di lingkungan Windows tetapi tetap mencoba membuat '/ home / dhaynes'. Saya mencoba setiap kombo yang saya bisa termasuk pengaturan HOME ke / cygdrive / c / users / dhaynes. Mencari pesan kesalahan di Google, tidak dapat menemukan apa pun, tidak dapat menemukan apa pun di situs cygwin. Saya menggunakan cygwin dari cmd.exe, bukan bash.exe tetapi masalahnya ada di keduanya.
Saya akhirnya menyadari bahwa direktori home di / etc / passwd lebih diutamakan daripada variabel lingkungan $ HOME. Saya dengan sederhana menjalankan ulang 'mkpasswd -l> / etc / passwd' dan itu memperbarui direktori home, sekarang semuanya baik-baik saja dengan ssh.
Itu mungkin jelas untuk tipe linux dengan pengalaman sysadmin tetapi bagi kita yang terutama menggunakan Windows itu agak tidak jelas.
Direktori home di / etc / passwd TIDAK didahulukan dari semuanya. Namun ini digunakan sebagai sumber utama untuk jalur direktori HOME Anda saat masuk dari jarak jauh, atau menggunakan ssh. Lihat ini dari FAQ Cygwin cygwin.com/faq/faq.setup.html#faq.setup.home
Christopher
2
Saya kebetulan menggunakan cwRsync (Cygwin + Rsync untuk Windows) di mana cygwin dibundel, dan saya tidak dapat menemukan / etc / passwd.
Dan itu terus berkata
Could not create directory '/home/username/.ssh'.
...
Failed to add the host to the list of known hosts (/home/username/.ssh/known_hosts).
Jadi saya menulis file batch yang mengubah variabel HOME sebelum menjalankan rsync. Sesuatu seperti:
set HOME=.
rsync /path1 user@host:/path2
Dan biola! Folder .ssh muncul di direktori yang berfungsi saat ini dan rsync berhenti mengganggu dengan sidik jari rsa.
Ini hotfix cepat, tetapi nanti Anda harus mengubah HOME ke lokasi yang lebih aman.
db_home:
kutipan dan membuatnya berfungsi.Jawaban:
Dimulai dengan Cygwin 1.7.34 , cara yang disarankan untuk melakukannya adalah dengan menambahkan
db_home
pengaturan khusus ke/etc/nsswitch.conf
. Keinginan umum saat melakukan ini adalah membuat direktori home Cygwin Anda sama dengan direktori profil pengguna Windows Anda. Pengaturan ini akan melakukannya:Atau, dengan kata lain:
Anda perlu menggunakan formulir terakhir jika Anda menginginkan variasi pada skema ini, seperti memisahkan file home Cygwin Anda ke dalam subdirektori dari direktori profil pengguna Windows Anda:
Ada beberapa skema alternatif lain untuk
windows
opsi tersebut ditambah beberapa%
token lain yang dapat Anda gunakan sebagai pengganti%H
atau sebagai tambahan. Lihat yangnsswitch.conf
deskripsi sintaks di Cygwin Panduan Pengguna untuk rincian.Jika Anda menginstal Cygwin sebelum 1.7.34 atau telah menjalankan
mkpasswd
utilitasnya sehingga Anda memiliki/etc/passwd
file, Anda dapat mengubah direktori home Cygwin Anda dengan mengedit entri pengguna Anda di file itu. Direktori beranda Anda adalah elemen kedua hingga terakhir pada baris pengguna Anda di/etc/passwd
.¹Apa pun cara Anda melakukannya, ini menyebabkan
HOME
variabel lingkungan disetel selama startup shell.²Lihat item FAQ ini untuk mengetahui lebih lanjut tentang topik tersebut.
Catatan kaki:
Pertimbangkan bergerak
/etc/passwd
dan/etc/group
keluar dari jalan untuk menggunakan SAM baru / mekanisme berbasis AD sebagai gantinya.Meskipun dimungkinkan untuk hanya mengatur
%HOME%
melalui Panel Kontrol, secara resmi tidak disarankan . Tidak hanya menggantikan mekanisme di atas begitu saja, itu tidak selalu berfungsi, seperti saat menjalankan skrip shell melaluicron
.sumber
ssh
tidak akan berfungsi dengan benar sampai pengeditan/etc/passwd
seperti yang dijelaskan./etc/passwd
file tersebut. Lihat jawaban saya di sini untuk menghindari masalah seperti itu.db_home: /%H
mungkin menyelesaikan untuk nama pengguna domain (bukan nama pengguna lokal), yang mungkin bukan yang Anda inginkan.db_home: /cygdrive/c/Users/%U
melakukan apa yang saya inginkan.db_home: windows
, dibutuhkansh
sekitar 2,5 hingga 3,5 detik untuk memulai. Saat saya menggunakandb_home: /cygdrive/c/Users/%U
, dibutuhkansh
sekitar 0,9 hingga 1,0 detik untuk memulai. Ketika saya menghapusdb_home
baris atau kode keras ke direktori home Windows,sh
membutuhkan waktu sekitar 0,2 hingga 0,3 detik untuk memulai. Saya akan menggunakan solusi hard-coded, misalnyadb_home: /cygdrive/c/Users/susam
, karena saya sering menjalankan skrip shell dari Command Prompt menggunakansh
perintah, misalnyash foo.sh
dan menunggu lebih dari 2 detik menjadi tidak nyaman.Cygwin 1.7.34+
Bagi mereka yang menggunakan Cygwin 1.7.34 atau lebih tinggi, Cygwin mendukung konfigurasi cara mengambil direktori home, shell login, dan informasi gecos di
/etc/nsswitch.conf
. Ini dirinci di bagian Panduan Pengguna Cygwin:Jika sebelumnya Anda telah membuat file
/etc/passwd
atau,/etc/group
Anda ingin menghapusnya dan mengkonfigurasi Cygwin menggunakan model Keamanan Windows baru untuk pemetaan POSIX.Pengaturan
/etc/nsswitch.conf
filedb_home:
menentukan bagaimana Cygwin mengambil direktori home pengguna. Pengaturan default untukdb_home:
adalahJadi secara default, Cygwin hanya menyetel direktori home ke
/home/$USERNAME
. Anda dapat mengubahnya meskipun untuk menunjuk ke jalur kustom lain yang Anda inginkan. Karakter wildcard yang didukung adalah:%u
Nama pengguna Cygwin (huruf kecil u).%U
Nama pengguna Windows (huruf besar U).%D
Domain Windows dalam gaya NetBIOS.%H
Direktori beranda Windows dengan gaya POSIX. Perhatikan bahwa, untukdb_home:
pengaturan, ini hanya masuk akal tepat setelah garis miring sebelumnya, seperti padadb_home: /%H/cygwin
%_
Karena spasi dan karakter TAB digunakan untuk memisahkan skema, spasi dalam nama file harus diberikan sebagai%_
(itu garis bawah).%%
Karakter persen.Sebagai ganti jalur, Anda bisa menentukan salah satu dari empat skema jalur bernama yang sudah ditentukan sebelumnya.
windows
Direktori home pengguna diatur ke direktori yang sama yang digunakan sebagai direktori home Windows, biasanya sesuatu di sepanjang baris%USERPROFILE%
atauC:\Users\$USERNAME
. Tentu saja, direktori Windows diubah menjadi gaya POSIX oleh Cygwin.cygwin
Hanya AD: Direktori home pengguna disetel ke jalur POSIX yang diberikan dalam atribut cygwinHome dari kelas bantu cygwinUser. Lihat juga bagian bernama "The cygwin schema" .unix
Hanya IKLAN: Direktori beranda pengguna disetel ke jalur POSIX yang diberikan dalam atribut unixHomeDirectory dari kelas tambahan posixAccount. Lihat juga bagian yang disebut "Skema unix" .desc
Direktori beranda pengguna disetel ke jalur POSIX yang diberikan dalam setelan mirip-XML home = "..." di atribut deskripsi pengguna di SAM atau AD. Lihat bagian bernama "The desc schema" untuk penjelasan mendetail.Berikut ini akan membuat direktori home pengguna di Cygwin sama dengan yang digunakan untuk direktori home Windows.
Cygwin 1.7.33 atau yang lebih lama
Bagi mereka yang menggunakan Cygwin 1.7.33 atau sebelumnya, perbarui ke versi terbaru Cygwin dan hapus file
/etc/passwd
dan yang sebelumnya digunakan/etc/group
, kemudian lihat langkah-langkah di atas.Lain, ikuti langkah-langkah lama di bawah ini.
Pertama, tetapkan variabel lingkungan Windows untuk HOME yang mengarah ke profil pengguna Anda:
HOME
%USERPROFILE%
Sekarang kita akan memperbarui
/etc/passwd
file Cygwin dengan%HOME%
variabel Windows yang baru kita buat. Shell login dan remote login viassh
akan mengandalkan/etc/passwd
untuk memberi tahu mereka lokasi jalur pengguna$HOME
.Pada prompt perintah Cygwin bash ketik yang berikut ini:
The
-d
beralih memberitahu mkpasswd untuk memasukkan pengguna DOMAIN, sementara-l
untuk pengguna mesin LOKAL hanya output. Ini penting jika Anda menggunakan PC di tempat kerja tempat informasi pengguna diperoleh dari Pengontrol Domain Windows.Sekarang, Anda juga dapat melakukan hal yang sama untuk grup, meskipun ini tidak perlu kecuali Anda akan menggunakan komputer yang merupakan bagian dari Domain Windows. Cygwin membaca informasi grup dari database akun Windows, tetapi Anda dapat menambahkan
/etc/group
file jika komputer Anda sering terputus dari Kontroler Domainnya.Pada prompt Cygwin bash ketik yang berikut ini:
Sekarang, keluar dari Cygwin dan mulai lagi. Anda harus menemukan bahwa jalur HOME Anda menunjuk ke lokasi yang sama dengan Profil Pengguna Windows Anda - yaitu
/cygdrive/c/Users/username
sumber
mkgroup
atas.Saya melakukan sesuatu yang sangat sederhana. Saya tidak ingin mengubah variabel lingkungan windows 7. Jadi saya langsung mengedit file Cygwin.bat.
Ini baru memulai shell lokal dengan direktori home ini; itulah yang saya inginkan. Saya tidak akan mengakses ini dari jarak jauh, jadi ini berhasil untuk saya.
sumber
%HOME%
lokasi Windows lama , sementara Cygwin vim menggunakan$HOME
jalur baru yang Anda nyatakan.Cygwin
mount
sekarang mendukung metode bind yang memungkinkan Anda memasang direktori. Karenanya Anda cukup menambahkan baris berikut ke/etc/fstab
, lalu restart shell Anda:sumber
Ubah variabel lingkungan HOME Anda.
di XP, klik kanan My Computer >> Properties >> Advanced >> Variabel Lingkungan >> Variabel Pengguna untuk >> [pilih variabel HOME] >> edit
sumber
Saya ingin menambahkan koreksi / pembaruan sedikit tentang $ HOME yang diutamakan. Direktori home di / etc / passwd didahulukan dari segalanya.
Saya adalah pengguna Cygwin lama dan saya baru saja menginstal Windows 7 x64 dan Cygwin V1.126 dengan bersih. Saya menjadi gila mencoba mencari tahu mengapa setiap kali saya berlari ssh saya terus mendapatkan:
Saya menambahkan definisi HOME = c: \ users \ dhaynes di lingkungan Windows tetapi tetap mencoba membuat '/ home / dhaynes'. Saya mencoba setiap kombo yang saya bisa termasuk pengaturan HOME ke / cygdrive / c / users / dhaynes. Mencari pesan kesalahan di Google, tidak dapat menemukan apa pun, tidak dapat menemukan apa pun di situs cygwin. Saya menggunakan cygwin dari cmd.exe, bukan bash.exe tetapi masalahnya ada di keduanya.
Saya akhirnya menyadari bahwa direktori home di / etc / passwd lebih diutamakan daripada variabel lingkungan $ HOME. Saya dengan sederhana menjalankan ulang 'mkpasswd -l> / etc / passwd' dan itu memperbarui direktori home, sekarang semuanya baik-baik saja dengan ssh.
Itu mungkin jelas untuk tipe linux dengan pengalaman sysadmin tetapi bagi kita yang terutama menggunakan Windows itu agak tidak jelas.
sumber
Saya kebetulan menggunakan cwRsync (Cygwin + Rsync untuk Windows) di mana cygwin dibundel, dan saya tidak dapat menemukan / etc / passwd.
Dan itu terus berkata
Jadi saya menulis file batch yang mengubah variabel HOME sebelum menjalankan rsync. Sesuatu seperti:
Dan biola! Folder .ssh muncul di direktori yang berfungsi saat ini dan rsync berhenti mengganggu dengan sidik jari rsa.
Ini hotfix cepat, tetapi nanti Anda harus mengubah HOME ke lokasi yang lebih aman.
sumber