我遵循了以下步骤:
-
使用gitbash在windows机器上创建了userid为ABC的SSH密钥。
-
使用userid root将公钥复制到linux服务器:
scp ~/.ssh/id_rsa.pub root@Linuxserver:~/.ssh/.
它要求输入密码并复制了文件。
-
SSHroot@Linuxserver使用gitbash->输入的Linux服务器密码->登录到linux服务器。
-
将公钥复制到Linux服务器的.ssh中的authorized_keys:
cat id_rsa.pub >> authorized_keys
-
SSHroot@Linuxserver使用gitbash->无需询问密码即可登录
-
SCP通过Maven无法无缝工作,总是要求提供密码。即使是Linux root用户的密码也不起作用,它一次又一次地要求输入密码。
下面在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没有获取私钥。
让我们举一个例子:
localuser $ ssh remoteuser@server.com
现在SCP或SSH使用检查两件事(考虑公钥授权):
-
使用发出ssh命令的私钥,通常为~/.ssh/id_rsa。在本例中,它是/home/localuser/.ssh/id_rsa
-
用户的公钥,在您登录的用户的~/.ssh/authorized_keys文件中。在我们的例如远程服务器中,它将是/home/remoteuser/.ssh/Authorizedd_keys
我对Maven配置不太了解,但你似乎正试图以ABC用户的身份登录,在这种情况下,ABC用户应该在其authorized_keys文件