ssh sử dụng sai thư mục nhà trong Cygwin


12
$ ssh usaname@login.somehost.no

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

Bất cứ ý tưởng tại sao ssh không sử dụng biến môi trường $ HOME khi nó cố gắng xác định vị trí ~ / .ssh?

(chỉnh sửa: định dạng cố định)

ssh  cygwin 

Câu trả lời:


9

Có một cái nhìn vào /etc/passwd. Hãy chắc chắn rằng mục ở đó phù hợp với thư mục nhà dự kiến ​​của bạn. Đây là trường thứ hai để cuối cùng cho mục nhập của người dùng của bạn.


4

Nếu $HOMEbiến của bạn được đặt, nhưng ssh không nhận ra nó, hãy đặt dòng này vào /etc/nsswitch.conf:

db_home: /%H

Điều đó sẽ thiết lập thư mục chính Cygwin mà không yêu cầu tồn tại tệp / etc / passwd.


Tôi đã thiết HOMEđể %USERPROFIEL%trong biến môi trường trước khi Cygwin cài đặt. Vì vậy, ... / home / <myusername> chưa được tạo ( /etc/passwd cannot be found). Và không thể sử dụng khóa ssh trong% USERPROFILE%. db_home: /%Hkhắc phục vấn đề một cách hoàn hảo. Cảm ơn rất nhiều!
Marslo

2

Trong /etc/nsswitch.conf:

db_home:  windows

Xem Cài đặt db_home . Điều này nói với Cygwin chỉ sử dụng %USERPROFILE%thư mục Windows là Cygwin $ HOME.

Điều này là cần thiết nếu, ví dụ, bạn muốn chia sẻ cùng một khóa SSH giữa git (GitHub Enterprise) và SSH cho các hệ thống Unix / Linux cục bộ khác nhau.

Cài đặt %HOME%ở cấp độ HĐH không hoạt động (mặc dù $HOMEtrong bash phản ánh chính xác cài đặt).

Bạn có thể thấy từ câu hỏi ban đầu rằng SSH đang cố cập nhật thư mục chính của Windows, trong phiên bản Windows cũ hơn của Vidar C:\Documents and Settings\vidar kongsli. Trong các phiên bản hiện tại (7+, tôi nghĩ vậy), tương đương là C:\Users\%USERNAME%(hoặc, nếu Windows không được cài đặt trên C:, %SystemDrive%\Users\%USERNAME%).


0

Là biến HOMExuất khẩu? Hãy thử: export HOMEsau đó sshmột lần nữa.


0

Đặt db_homevào /etc/nsswitch.confđường dẫn đến nhà của bạn. Đây là phương pháp được đề xuất bởi MSYS2.

Thêm một HOMEbiến môi trường cũng hoạt động .

Git-cho-Windows bao gồm envtrong db_home, mà nên đọc của bạn HOMEbiến bash, tuy nhiên, nó là không đáng tin cậy .


1
Chỉnh sửa thế nào? Bạn đã đặt db_home thành gì?
Andrew Schulman

@AndrewSchulman Đến thư mục tôi muốn làm thư mục nhà của tôi?
VarunAgw

1
ồ Đây là rất nhiều thông tin hữu ích. Cảm ơn bạn đã chỉnh sửa @ go2null :)
VarunAgw

Câu trả lời này không thực sự liệt kê những gì lỗi được đề xuất "khuyến nghị". Các lỗi được liên kết nói:db_home: windows cygwin desc
Gordon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.