我按照以下步骤操作:
使用git bash在Windows机器上使用用户ID ABC创建SSH密钥。
使用userid root将公钥复制到linux服务器:
scp ~/.ssh/id_rsa.pub root@Linuxserver:~/.ssh/.
它要求输入密码并复制文件。
使用git bash的SSH root @ Linuxserver - >输入Linux服务器密码 - >登录到linux服务器。
将公钥复制到Linux服务器的.ssh中的authorized_keys:
cat id_rsa.pub >> authorized_keys
使用git bash的SSH root @ Linuxserver - >无需密码即可登录
下面是Maven设置的文件:
<server>
<id>Linuxserver</id>
<username>ABC</username>
<privateKey>${user.home}/.ssh/id_rsa</privateKey>
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
以下是pom.xml的摘录:
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0-beta-6</version>
</extension>
</extensions>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<configuration>
<serverId>Linuxserver</serverId>
<fromFile>${project.parent.basedir}/projectname/filename</fromFile>
<url>scp://Linuxserver.com/testdirectory</url>
</configuration>
<executions>
<execution>
<id>upload-file-to-server</id>
<phase>verify</phase>
<goals>
<goal>upload-single</goal>
</goals>
</execution>
</executions>
</plugin>
我希望SCP在没有任何用户互动的情况下发生。简而言之,问题似乎是Maven SCP没有拿起私钥。
答案 0 :(得分:0)
让我们举一个例子:
localuser $ ssh remoteuser@server.com
现在SCP或SSH使用检查两件事(考虑公钥授权):
发出ssh命令的用户私钥,通常为〜/ .ssh / id_rsa。在示例中,它将是/home/localuser/.ssh/id_rsa
用户的公钥,在您登录的用户的〜/ .ssh / authorized_keys文件中。在我们的例如在远程服务器上它将是/home/remoteuser/.ssh/authorized_keys
我对Maven配置知之甚少,但看起来你正试图以ABC用户身份登录,在这种情况下,ABC用户应该在其authorized_keys文件中拥有本地用户的密钥