SSH из rsync на Windows - PullRequest
       17

SSH из rsync на Windows

0 голосов
/ 04 февраля 2019

Мой сценарий сборки загружается в производство, используя rsync через ssh.Обычно я выполняю развертывание из Linux-бокса, но я хочу иметь возможность развертывать и из Windows, даже в тех случаях, когда мне нужно сделать быстрые изменения и получить доступ только к моей машине с Windows.Однако у меня проблемы.Вот соответствующая часть подробного вывода.Первая строка выводится моим скриптом сборки, а остальные - либо rsync, либо программами, которые он вызывает (т. Е. Я не вызываю SSH напрямую).

Executing the rsync command: ['rsync', '--verbose', '-avzihhhc', '--exclude=/.well-known', '--exclude', 'deploy.sh', '--delete', '..\\scottseverance.mss\\_site\\', 'myuser@myhost:/home/public']
opening connection using: ssh -l myuser myhost rsync --server -vvnlogDtprcze.iLsfxC "--log-
format=%i" --delete . /home/public  (11 args)
Could not create directory '/home/Scott/.ssh'.
The authenticity of host 'myhost (host's ip address)' can't be established.
ECDSA key fingerprint is SHA256:a+Ny0PLkKhm80+5kqzqfVXIlbkQpn/CpMMrzurd8sDI.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/Scott/.ssh/known_hosts).
myuser@myhost's password:

Я думаю, что ключ в том, какие каталогиэто ищет.Обратите внимание, что он не может создать /home/Scott/.ssh.Естественно, он не может этого сделать, поскольку /home не существует на компьютере с Windows.$HOME возвращает /c/Users/Scott, поэтому, даже если он ищет переменные в стиле UNIX, его не следует путать.Кроме того, тот факт, что он запрашивает пароль вместо использования моего ключа, показывает, что мой каталог .ssh не найден.

Вот мои настройки.

  • I 'Я вызываю мои скрипты из Git Bash, и, насколько я могу судить, SSH в моей системе - это тот, который установлен Git.Запуск ssh непосредственно из командной строки работает, как и ожидалось.
  • Я использовал Chocolatey для установки rsync.
  • Мой скрипт сборки находится на Python и работает на Python 3.7.

Есть идеи, что может происходить?

1 Ответ

0 голосов
/ 05 февраля 2019

Я нашел ответ в комментарии, размещенном на Chocolatey's rsync page .Проблема в том, что choco rsync необъяснимо поставляется с SSH в комплекте, и что ssh не работает.Конечно, нет смысла включать SSH в rsync, поскольку это две совершенно разные программы.Я попытался переименовать пакет SSH, но это не сработало.Комментарий ниже, однако:

Пользователь Адам написал :

Вид сломанного SSH!

ssh, который поставляется с rsyncфактически не работает, потому что ищет домашний каталог пользователя в неправильном месте.Вы можете исправить это, создав C:\ProgramData\chocolatey\lib\rsync\cwRsync_5.5.0_x86_Free\etc\nsswitch.conf, содержащий db_home: /%H.Было бы неплохо, чтобы установщик создал его.Но затем, когда вы используете PubkeyAuthentication или конфигурацию ssh для каждого пользователя, он жалуется на слишком открытые разрешения, которые можно исправить, запустив

set key=".ssh\id_rsa"
icacls %key% /c /t /inheritance:d
icacls %key% /c /t /grant %username%:F
icacls %key% /c /t /remove Administrator BUILTIN\Administrators BUILTIN Everyone System Users
icacls %key%

ssh из пакета openssh не имеет этой проблемы.

...