2013-03-26 2 views
3

Я использую «mavenDeployer» для использования ssh/scp во время задачи «uploadArchives», с утилитами wagon ssh.gradle maven ssh

Вместо того, чтобы закодировать пароль в build.gradle, я хотел бы полагаться на правильную настройку ssh. В частности, я хочу, чтобы пользователь указывал свой секретный ключ, и этот закрытый ключ загружался в их среду (ssh-agent, ssh-add и т. Д.). У maven repo есть общий идентификатор пользователя , и все реальные пользователи имеют свой .pub ключ, правильно добавленный в файл authorized_keys общего идентификатора пользователя.

Хотя Maven/муравей, кажется, имеют атрибут «PrivateKey», а Gradle DSL принимает его, он, кажется, не имеет никакого эффекта, когда я установил его:

 mavenDeployer { 
      configuration = pr.configurations.publishJars 
      String keyFile = System.properties["user.mavenKey"] 
      repository(url: "scp://maven.company.com/path/to/maven") { 
        logger.info("Using SSH key: ${keyFile}") 
        authentication(userName: "maven", privateKey: keyFile) 
      } 

Если я код в фактический пароль в соответствии с примером в документации по градуированию, он действительно работает, поэтому я знаю, что все работает. Кроме того, изменение privateKey на privatekey (все в нижнем регистре) вызывает ошибку свойства, поэтому я знаю, что свойство существует и распознается на некотором уровне.

И я знаю, сам ключ SSH работает:

% ssh -i ~/.ssh/mavenKey [email protected] ls/
    [ no errors, output trimmed ] 

Но когда я запускаю его, я получаю запрос на ввод пароля общего доступа идентов:

% gradle uploadArchives 
    [... stuff ...] 
    Using SSH key: /homes/klash/.ssh/mavenKey 
    Password for [email protected]: 

Как вы можете видеть, что это не запрос кодовой фразы для ключа.

+0

'Использование ключа SSH:/homes/klash/.ssh/mavenKey' Нет ли опечатки в свойстве системы? Должно быть, должно быть '/ home/klash/...' –

+0

Нет, нет опечатки. Наши дома находятся на NFS, через автомонтировку, типичную крупно-техническую компанию. Я проверил четыре раза, что передается правильный путь к закрытому ключу SSH. – Klash

+0

Не вижу проблем с вашим кодом, я в основном делаю то же самое без проблем. Какую версию градиента вы используете? Вы пытались работать с флагом '-d' (он производит _a lot_ вывода, но может быть полезен при попытке понять, что происходит). Еще одна вещь; вы упоминаете sph passphrase - это такая фраза, которая требуется в вашей настройке? Это было бы отличным от того, что я тестировал, поскольку мой закрытый ключ ssh не имеет ключевой фразы. – Steinar

ответ

0

Убедитесь, что ваш секретный ключ не требует пропущенной фразы.
Можете ли вы получить доступ к удаленному компьютеру из командной строки, используя ssh [email protected], не запрашивая пароль?
Если вы не используете ssh-copy-id для отправки вашего открытого ключа на сервер.

Смежные вопросы