openSSH игнорирует переменную HOME env


3

Я пытался разобраться Could not create directory проблема с OpenSSH, установленным через Cygwin, и попробовал каждый решение Я могу найти в Интернете, но никто из них не работает ...

Я установил Cygwin, похоже, работает. Я установил openSSH, который также, кажется, работает (я могу ssh на другие машины).

Я положил папку Cygwin bin в pathтак что я могу бежать ssh из командной строки, и это тоже работает. Но каждый раз, когда я запускаю его, он выдает ошибку:

Could not create directory '/home/will/.ssh'
The authenticity of host 'blah (111.222.333.444)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)?

Почему он пытается использовать этот каталог? Я установил env. переменная HOME в %USERPROFILE%, он печатает правильное местоположение, когда я повторяю его, и я также создал .ssh Дир и сделал ssh-keygen вещь там.

Я где-то читал, что мне нужно заменить home/will в cygwin/etc/passwd, но у меня нет этого файла. И если я использую mkpasswd -l чтобы сгенерировать его, он не включает меня как пользователя, поэтому я ничего не могу заменить. Я действительно в тупике.

Что мне нужно сделать / установить, чтобы сделать эту работу?



@ Chris.C Какой ответ? мой пользователь не отображается в файле, созданном mkpasswdИтак, как я могу отредактировать домашний каталог, предоставленный там?
will

Ответы:


2

Если вы загляните внутрь "/ usr / bin / ssh-user-config", вы заметите совет:

    csih_error_multi \
      "There is no home directory set for you in the account database." \
      'Setting $HOME is not sufficient!'

Не касаясь пользовательской базы данных Windows, самый быстрый способ определить другой дом:

 mkpasswd -d -u "Your_Windows_User_Name" > /etc/passwd
or
 mkpasswd -l -u "Your_Windows_User_Name" > /etc/passwd  

скорее всего "будет". Поскольку вы пользователь локальный или доменный.

И измените последнее, но одно поле "/ home / will" на нужное вам значение.

Дополнительное чтение для пользователей Windows и Cygwin:

https://cygwin.com/cygwin-ug-net/ntsec.html
https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch

1

Вы можете отредактировать / etc / ssh / ssh_config и добавить следующие свойства:

IdentityFile /C/Users/username/.ssh/id_rsa
UserKnownHostsFile /C/Users/username/.ssh/known_hosts

Это все еще печатает ошибку Could not create directory '/home/username/.ssh'. Но кроме этого все работает. Кстати, я использую msys2, но теоретически это должно работать и для вас.


0

Спасибо matzeri за подсказку, чтобы посмотреть в / usr / bin / ssh-user-config. Заглянув туда, я понял, что скрипт получает домашний каталог через вызов getent passwd, Когда я запускаю его в своей системе, я вижу, что домашний каталог, который он ищет, находится в / home (что в файловой системе Windows переводится в C: \ Cygwin64 \ home \ myusername)

Мой фактический домашний каталог Windows (% USERDIR%) - это C: \ Users \ myusername, которое Cygwin видит как / cygdrive / c / Users / myusername.

Я обнаружил, что в качестве альтернативы созданию файла / etc / passwd я могу символическую ссылку на мой домашний каталог Windows на местоположение, которое хочет Cygwin:

cd /home
rm -rf myusername
ln -s /cygdrive/c/Users/myusername .

После этого у SSH нет проблем с чтением каталога .ssh в моем домашнем каталоге Windows.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.