В доступе отказано (публичный ключ, клавиатура-интерактив) - PullRequest
0 голосов
/ 11 июня 2010

В доступе отказано (publickey, клавиатура-интерактив) получена эта ошибка, когда я пытаюсь извлечь cvs из perl.

в чем проблема и как ее решить?

Код:

system ( "CSVROOT:--- CVSRSH:--- cvs co a ");

# i have proper value in cvs root and cvs rsh .

он работает один и использует ключ ssh

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Последующие расследования после вопросов Часа:

  • Эта команда обычно запускается в /bin/sh или в какой-либо другой оболочке?Для проверки выполните команду /bin/sh, чтобы запустить оболочку Bourne, и повторите команду вручную.Я не знаком с нотацией "CVSROOT: ---" - это значит установить переменную среды CVSROOT?В оболочке Bourne это обычно делается с использованием "=", никогда не видел ":" used.

  • Ожидает ли команда, когда она выполняется вручную, какой-то ввод от вас?Я никогда не видел cvs co, чтобы сделать это, но я не использую его с ssh.

  • Попробуйте добавить перенаправление в конец команды и посмотрите, что в файле послеработает:

    system ( "CSVROOT:--- CVSRSH:--- cvs co a > /tmp/log_cmd 2>&1");

1 голос
/ 11 июня 2010

Действия по диагностике ошибки:

  • Используете ли вы SSH-ключ?
  • У этого ключа есть пароль?
  • Это работает, когда вы запускаете его вручную?
  • Сценарий выполняется от имени того же пользователя, что и при запуске вручную?
  • Работает ли скрипт в той же среде, в которой вы запускаете его вручную? (например, cron задания не выполняются в одной среде)

Если вы считаете, что все ответы положительные, то, скорее всего, последний ответ действительно отрицательный. Если скрипт выполняется из планировщика, например cron, он, скорее всего, не будет работать в той же среде, в которой вы запускаете его вручную. Обычно я решаю эту проблему, используя сценарий оболочки между планировщиком и сценарием Perl:

#!/bin/bash

source /home/USERNAME/.profile

#set any other environment variables it needs like

export CSVROOT=:pserver:USERNAME@HOST:/path/to/repo
export CVSRSH=ssh

/path/to/perl/script/script.pl
...