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?

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


источник

Ответы:

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

Переменная HOMEэкспортируется? Попробуй: export HOMEпотом sshснова.

Грег Хьюгилл
источник
0

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

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

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

VarunAgw
источник
1
Редактировать как? Что вы установили db_home?
Эндрю Шульман
@AndrewSchulman В каталог, который я хочу, чтобы мой домашний каталог?
VarunAgw
1
Вот это да! Это много полезной информации. Спасибо за правку @ go2null :)
VarunAgw
Этот ответ на самом деле не перечисляет то, что рекомендует «рекомендуемая» связанная ошибка. Связанная ошибка говорит:db_home: windows cygwin desc
Гордон