Проблема, выполнив Rsync и SSH с удостоверением частного ключа

Я пробую делать другому копию изображений в динамической форме от сервера. Сервер клоун собран в одном Google Platform из-за которого единственный способ переносить файлы путь sshили rsync или sftp, он с Вашей соответствующей парой публичных и частных ключей.

Как частный ключ содержит фразу пароля, я использовал следующую команду для того, чтобы он не просил ее у меня снова:

ssh-add ~/.ssh/mi_certificado.pem

И потом чтобы делать перенесение файлов использовало следующее командовало с конечной остановки:

$ rsync  -e "ssh -i /home/pi/key.pem" -aq --rsync-path="mkdir -p /ruta/a/crear/ && rsync" /ruta/a/copiar/* usuario@host:/ruta/a/pegar/

До сих пор все добро, функционируй совершенно. Восток script создай дерево каталога на удаленном сервере и перенеси изображения, которые есть в локальной папке в удаленную только что созданную папку.

Проблема происходит, когда я делаю точно то же самое, но с pythonа именно:

import os    
os.system('rsync  -e "ssh -i /home/pi/key.pem" -aq --rsync-path="mkdir -p /ruta/a/crear/ && rsync" /ruta/a/copiar/ usuario@host:/ruta/a/pegar/')

Заметь: Также я это попробовал с subprocess.call()

И Появляется следующая ошибка:

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory

У меня нет идеи porqué он пробует соглашаться в ssh-askpass, что не установлен, и я не имею из-за которого это устанавливать.

Обновление еще Один прецедент: Рукописный шрифт Пайтон прокручивает изображение в окне как демон с PM2, если я это скроллирую прямо с конечной остановки с $> sudo mistript.py функционируй, но он просит у меня вводить фразу пароля в компьютер.

Как предварительное заключение, я думаю, что ни PM2 они не замечают даже Пайтона в инструкцию, что, если он стоит для конечной остановки (ssh-add ~/.ssh/mi_certificado.pem) так как в обоих случаях они просят у меня пароль частного ключа.

2
задан 29.07.2019, 04:55
1 ответ

В принципе, я думаю, что проблема зиждится на том, чтобы у процесса ssh, который бросает rsync, не было informaciГіn относительно socket , где слушает агент СС, у которого уже есть ключ твоего частного ключа.

Из-за этого, пробует инициализировать ssh-askpass, который он вероятно не находит, потому что у процесса нет одного $PATH, который содержал бы /usr/bin.

В mayorГ - в Linux рабочего стола, когда агент СС инициализирует одну sesiГіn, (обычно ssh-agent или другой, segГєn среда рабочего стола, как gnome-keyring-daemon в атмосферах Gnome), что обслуживает просьбы autenticaciГіn используя socket , и этот объявляет посредством изменчивая среду SSH_AUTH_SOCK.

, Чтобы решать твою проблему, я предлагаю тебе использовать subprocess.call(cmd, env=env), где env должен поселять переменную SSH_AUTH_SOCK, которые ты можешь брать из os.environ.

Пример mГЎs сложный* чего-то сходного эта в этом gist .

Надеялся, что он подает тебя!

[1122-]

  • , Которых нет пытаясь, но виден правильно
1
ответ дан 01.12.2019, 22:54