'The authenticity of host '***' can't be established'
означает, что машине, с которой вы подключаетесь, не было приказано сохранить идентификационные данные других сторон (сервера) в файле known_hosts
, и он спрашивает, доверяете ли вы машине.Вы можете изменить ssh-клиент так, чтобы он автоматически добавлялся без запроса.
Попробуйте:
proc = subprocess.Popen(['scp', '-o BatchMode=yes',
'user@server:/location/file.txt',
'/someplace/file.txt'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
proc.wait()
print 'result: %s' % repr(proc.stderr.readline())
С приведенным выше кодом я получаю:
me@myMachine:~$ python tmp.py
result: 'Host key verification failed.\r\n'
me@myMachine:~$
Если я использую отключить StrictHostKeyChecking
, я получаю:
me@myMachine:~$ python tmp.py
result: 'Permission denied (publickey,password,keyboard-interactive).\r\n'
me@myMachine:~$ python tmp.py
Таким образом, похоже, что он печатает первую строку из stderr с включенным BatchMode
:)