【问题标题】:Why does Maven not use my privatekey when deploying with scp?为什么使用 scp 部署时 Maven 不使用我的私钥?
【发布时间】:2016-07-30 17:40:50
【问题描述】:

我正在使用 Maven 3 部署到我们的集群。在我的 settings.xml 以及 pom.xml 中的存储库中设置了一个私钥。目前一切正常,除了如果我打电话给mvn clean deploy,我会被要求输入密码。如果我使用 <password>pw</password> 而不是 <privateKey>path</privateKey> 它可以工作,但当然这不是我想要使用的。

settings.xml

<server>
    <id>company_cluster</id>
    <username>user</username>
    <privateKey>/home/user/.ssh/user</privateKey>
</server>

pom.xml

<build>
    <!-- ... -->
    <extensions>
        <!-- Enabling the use of SSH -->
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>2.4</version>
        </extension>
    </extensions>

</build>

<distributionManagement>
    <repository>
        <id>company_cluster</id>
        <url>scp://client.hadoop.company.at/home/user/deploy/</url>
    </repository>
</distributionManagement>

我在本地机器上生成了ssh 密钥,然后使用

ssh-copy-id user@client.hadoop.company.at

将其添加到授权密钥中。

【问题讨论】:

  • 会有一些(详细的)日志,它应该告诉你为什么它没有使用你的密钥。或在服务器上。
  • @Jakuje 如果我使用-X 开关运行它,我应该看到什么吗?这个输出有点大,我不知道我要找什么。
  • 这应该可以。路径/home/user/.ssh/user 真的指向私钥文件吗(听起来应该是id_rsa)?你使用密码吗?相关stackoverflow.com/q/2733447/1743880
  • @Tunaki 我认为id_rsa 只是文件的名称,如果没有指定其他名称。我尝试使用ssh-keygen 并得到一个id_rsa 文件,尝试过但也失败了:/
  • 顺便说一句:我可以在服务器上使用ssh 登录,没有任何问题,所以问题不可能出在服务器端。

标签: maven scp


【解决方案1】:

这是一个老问题,但我花了足够的时间在非常相似的问题上,认为值得发布答案。您不能在 settings.xml 文件的 server 节点中同时提供 usernameprivateKey。所以在settings.xml文件中应该如下:

  <server>
    <id>company_cluster</id>
    <privateKey>/home/user/.ssh/user</privateKey>
  </server>

【讨论】:

    【解决方案2】:
    mvn -U clean install -D skipTests
    

    导致错误信息:

    Could not transfer artifact ... from/to ...-repository (scp://.../repo/releases/): Cannot connect. Reason: invalid privatekey: [...-> [Help 1]
    

    我找到了这个链接https://help.mulesoft.com/s/article/Issue-with-key-based-authentication-while-connecting-to-SFTP-server

    并检查了我新生成的密钥是这样的:

    -----BEGIN OPENSSH PRIVATE KEY-----
    ...
    

    在我的旧(工作)环境中是:

    head -2 id_rsa
    -----BEGIN RSA PRIVATE KEY-----
    ...
    

    所以上面链接的提示是使用:

    ssh-keygen -t rsa -b 4096 -m PEM
    

    这意味着要创建一个新密钥 - 我已经将带有 ssh-copy-id 的密钥部署到了很多服务器......

    Openssh Private Key to RSA Private Key,如果找到密钥转换的过程。

    ssh-keygen -p -N "" -m pem -f  id_rsa
    

    将格式更改为 RSA

    head -1 id_rsa
    -----BEGIN RSA PRIVATE KEY-----
    

    并导致 mvn 错误消息消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-13
      • 2012-07-09
      • 2015-04-20
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2018-10-14
      相关资源
      最近更新 更多