Назад | Перейти на главную страницу

ssh использует неправильный домашний каталог в Cygwin

$ 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?

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

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

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

db_home: /%H

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

В /etc/nsswitch.conf:

db_home:  windows

Видеть Настройка db_home. Это говорит Cygwin просто использовать Windows %USERPROFILE% каталог как 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%).

Переменная HOME экспортируется? Пытаться: export HOME затем ssh очередной раз.

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

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

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