ssh использует неверный домашний каталог в 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

Есть идеи, почему ssh не использует переменную окружения $ HOME, когда пытается найти ~ / .ssh?

(редактировать: исправлено форматирование)

ssh  cygwin 

Ответы:


9

Посмотрите на /etc/passwd. Убедитесь, что запись там соответствует вашему ожидаемому домашнему каталогу. Это второе по значимости поле для ввода вашего пользователя.


4

Если ваша $HOMEпеременная установлена, но ssh не распознает ее, поместите эту строку в /etc/nsswitch.conf:

db_home: /%H

Это установит домашний каталог Cygwin без необходимости существования файла / etc / passwd.


Я установил HOMEдля %USERPROFIEL%переменных окружения , прежде чем установлен Cygwin. Итак ... / home / <myusername> не было создано ( /etc/passwd cannot be found). И не может использовать ключ ssh в% USERPROFILE%. db_home: /%Hисправить проблему отлично. Большое спасибо!
Марсло

2

В /etc/nsswitch.conf:

db_home:  windows

Смотрите настройку db_home . Это говорит Cygwin просто использовать %USERPROFILE%каталог Windows как Cygwin $ HOME.

Это необходимо, если, например, вы хотите использовать одни и те же ключи SSH между git (GitHub Enterprise) и SSH для различных локальных систем Unix / Linux.

Настройка %HOME%на уровне ОС не сработала (хотя $HOMEв bash правильно отражает настройки).

Из исходного вопроса видно, что SSH пытается обновить домашний каталог Windows, который в более старой версии Windows Vidar есть C:\Documents and Settings\vidar kongsli. В текущих версиях (7+, я думаю) эквивалент C:\Users\%USERNAME%(или, если Windows не установлена ​​на C :, %SystemDrive%\Users\%USERNAME%).



0

Установить db_homeв /etc/nsswitch.confна пути к вашему дому. Этот метод рекомендован MSYS2.

Добавление HOMEпеременной окружения также работает .

Git-for-Windows включает envв себя db_home, который должен прочитать вашу HOMEпеременную bash, однако это ненадежно .


1
Редактировать как? Что вы установили db_home?
Эндрю Шульман

@AndrewSchulman В каталог, который я хочу, чтобы мой домашний каталог?
VarunAgw

1
Вот это да! Это много полезной информации. Спасибо за правку @ go2null :)
VarunAgw

Этот ответ на самом деле не перечисляет то, что рекомендует «рекомендуемая» связанная ошибка. Связанная ошибка говорит:db_home: windows cygwin desc
Гордон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.