Как использовать SingleKnownHostProvider в `settings.xml`?
Я хочу настроить мой Maven settings.xml
содержать отпечаток RSA нашего внутреннего хранилища (с идентификатором "internal
"). Я нашел ответ о том, как игнорировать отпечаток пальца, и обнаружил класс с именем SingleKnownHost в том же пакете, который говорит"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>
но я получаю ошибку:
[ПРЕДУПРЕЖДЕНИЕ] Не удалось применить конфигурацию для внутреннего к фургону org.apache.maven.wagon.providers.ssh.jsch.ScpWagon:ClassNotFoundException: имя класса, которое было явно задано в конфигурации с использованием атрибута "реализация": "org.apache.maven.wagon.providers.ssh.knownhost.SingleKnownHostProvider'не может быть загружен
Почему это происходит? Я использую Maven 3.0.4
2 ответа
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. Есть исполняемый файл, который готов к запуску без какой-либо установки. Шаг для подключения следующий: -
PuTTY
- Открой
PUTTY.exe
- Установите связь с нашим хостом.
- Система предложит сохранить удаленный ключ RSA или нет. Пожалуйста, сохраните это.
- После этого удаленный ключ RSA будет храниться в реестре Windows
HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys
Первая проблема заключается в том, что <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 именем хоста сразу после scp: в URL-адресе сервера.
Замените HOSTKEY содержимым файла, в котором хранится открытый RSA-ключ SSHd (часто это следующий файл: /etc/ssh/ssh_host_rsa_key.pub
).