2

我想将我的 Maven 配置settings.xml为包含我们内部存储库的 RSA 指纹(ID 为“ internal”)。我找到了一个关于如何忽略指纹的答案,并在同一个中找到了一个名为SingleKnownHost的类,上面写着“具有已知有线值的简单 KnownHostsProvider”,这听起来与我想要的完全一样,但是这种配置:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd
    ">
    <!-- http://maven.apache.org/settings.html -->
    <pluginGroups/>
    <servers>
        <server>
            <id>internal</id>
            <username>root</username>
            <password>p4ssw0rd</password>
            <configuration>
                <knownHostsProvider implementation="org.apache.maven.wagon.providers.ssh.knownhost.SingleKnownHostProvider">
                    <hostKeyChecking>yes</hostKeyChecking>
                    <key>81:66:27:b9:15:36:3a:91:ec:66:43:4f:69:a0:ef:c4:b9:15:36</key>
                </knownHostsProvider>
            </configuration>
        </server>
    </servers>      
</settings>

但我得到了错误:

[警告] 无法将内部配置应用于 wagon org.apache.maven.wagon.providers.ssh.jsch.ScpWagon:ClassNotFoundException:使用“实现”属性在配置中明确给出的类名:“org.apache.maven。 wagon.providers.ssh.knownhost.SingleKnownHostProvider' 无法加载

为什么会出现这种情况?我正在使用 Maven 3.0.4

4

2 回答 2

0

AFAIU,Maven 将调用外部 SSH 命令,就像它连接到 SCM 时一样,例如SVN。为了摆脱连接提示,我们可能需要使用 SSH 至少连接到该主机一次。

#--I'm using CentOS release 5.4.

[my_user]$ ssh MY_USER@MY_HOST
The authenticity of host 'MY_HOST (MY_HOST_IP)' can't be established.
RSA key fingerprint is MY_FINGER_PRINT.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'MY_HOST,MY_HOST_IP' (RSA) to the list of known hosts.

~/.ssh/known_hosts包含 RSA 信息,如下例所示:-

MY_HOST,MY_HOST_IP ssh-rsa .....

然后下一次,当我们连接到该主机时,没有任何提示。其余的settings.xml应该在设置参考:服务器中提到。

我希望这可能会有所帮助。

编辑: 关于 Windows,请尝试使用PuTTY。有无需任何安装即可运行的可执行文件。连接步骤如下: -

油灰

  1. 打开PUTTY.exe
  2. 与我们的主机建立连接。
  3. 系统会提示是否保存远程 RSA 密钥。请保存。
  4. 之后,远程 RSA 密钥将存储在 Windows 注册表中HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
于 2013-04-03T04:44:56.997 回答
0

第一个问题<key>81:66:27:b9:15:36:3a:91:ec:66:43:4f:69:a0:ef:c4:b9:15:36</key>不是钥匙,而是钥匙的指纹。因此,即使可以通过这种方式指定密钥,它也无法工作。

要解决此问题,请将您的 wagon-ssh 扩展工件定义替换pom.xml为以下内容:

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ssh</artifactId>
      <version>3.0.1-SINGLE</version>
    </extension>
  </extensions>
</build>

在此处下载并安装此编号为 3.0.1-SINGLE 的特定版本:https ://github.com/AlexandreFenyo/maven-wagon

最后,settings.xml以这种方式更新您的:

<server>
        <id>internal</id>
        <username>root</username>
        <password>p4ssw0rd</password>
        <configuration>
                <hostKey>SERVERNAME HOSTKEY</hostKey>
            </knownHostsProvider>
        </configuration>
</server>

将 SERVERNAME 替换为服务器 URL 中 scp: 之后的主机名。

将 HOSTKEY 替换为存储 SSHd 公共 RSA 密钥的文件的内容(通常是以下文件:)/etc/ssh/ssh_host_rsa_key.pub

于 2017-08-18T18:22:11.883 回答