【发布时间】:2023-10-18 18:29:01
【问题描述】:
在 Windows 上使用 Maven,通过 SCP 传输,使用私钥。 这似乎是一个非常简单且记录在案的过程。但这对我不起作用。
在settings.xml中
<server>
<id>myserver</id>
<username>me</username>
<privateKey>C:/data/home/.ssh/id_rsa</privateKey>
</server>
在 pom.xml 中
<distributionManagement>
<repository>
<id>myserver</id>
<url>scp://myserver.domain.com/~me/deploy</url>
</repository>
</distributionManagement>
<build>
<extensions>
<!-- Enabling the use of FTP -->
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions>
</build>
期望是,它不应该来要求我输入密码才能登录。另请注意,我不想使用外部命令使其跨平台统一工作。不过……
--- maven-deploy-plugin:2.7:deploy (default-deploy) @ sparksample ---
Downloading: scp://myserver.domain.com/~me/deploy/com/domain/myproject/1.0-SNAPSHOT/maven-metadata.xml
The authenticity of host 'myserver.domain.com' can't be established.
RSA key fingerprint is 01:01:01:01:01:01:01:01:01:01:01:01:01:01:01:ff.
Are you sure you want to continue connecting? (yes/no): yes
: Password for me@myserver.domain.com:
不仅要求我输入密码,而且每次都强制我接受主机密钥。 但是它确实拾取了 settings.xml 文件,因为它使用正确的用户名进行连接。
那么如何避免询问我密码并使用提供的私钥?请注意,我可以使用完全相同的私钥文件通过 ant scp 任务成功完成此操作。
【问题讨论】:
-
您是否尝试在 settings.xml 中添加一个空的
?使用 -X 执行目标是否会添加更多信息,为什么会失败?使用的 ssh 客户端可能使用不同的密钥格式。是用 openssh 创建的吗? -
不记得确切的场景,这是一个可能的原因:远程计算机上的以下权限:~、~/.ssh、~/.ssh/authorized_keys。如果我们留下篡改任何这些文件/目录的可能性,一些 sshd 实现将不允许登录。如果源是 unix,则应充分保护 ~/.ssh/rsa_id 免受 r/w 影响。
-
URL 的实际外观如何? ^^ 第一部分应该是服务器的 url,第二部分应该是文件系统上的实际路径,对吧?
标签: xml maven deployment scp