我想配置我的Maven settings.xml
以包含我们内部存储库的RSA指纹(ID为“internal
”)。我在how to ignore the fingerprint找到了一个答案,并在同一个SingleKnownHost中找到了一个名为package的类,其中说“具有已知有线值的Simple 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:使用'implementation'属性在配置中显式指定的类名:'org.apache无法加载.maven.wagon.providers.ssh.knownhost.SingleKnownHostProvider'
为什么会这样?我正在使用Maven 3.0.4
答案 0 :(得分:0)
AFAIU,Maven将调用外部SSH命令,就像连接到SCM时一样,例如。 the 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
的其余部分应该在Settings Reference:Servers.
我希望这可能有所帮助。
<强>编辑:强> 关于Windows,请尝试使用PuTTY。有可执行文件可以在没有任何安装的情况下运行。连接步骤如下: -
PUTTY.exe
HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
答案 1 :(得分:0)
第一个问题是<key>81:66:27:b9:15:36:3a:91:ec:66:43:4f:69:a0:ef:c4:b9:15:36</key>
不是密钥,而是密钥的指纹。所以它无法工作,即使可以这样指定密钥。
要解决此问题,请使用以下内容替换pom.xml
中的wagon-ssh扩展工件定义:
<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>
在服务器URL中的scp:之后用主机名替换SERVERNAME。
将HOSTKEY替换为存储SSHd公共RSA密钥的文件的内容(通常是以下文件:/etc/ssh/ssh_host_rsa_key.pub
)。