Maven识别SSH密钥但部署时仍要求输入密码的问题
我之前也碰到过几乎一模一样的情况,明明本地SSH连接服务器没问题,Maven也指定了私钥,就是在IntelliJ里跑deploy命令时非要输密码,折腾了好几个小时才搞定,给你几个实用的排查方向:
检查私钥文件的权限:Windows下虽然权限管控没Linux那么严,但如果其他用户也能读取你的私钥文件,Maven可能会拒绝使用它。右键
C:/Users/user/.ssh/id_rsa文件,打开「属性」→「安全」选项卡,删除所有除了你当前用户之外的权限,只保留你自己的「读取」和「写入」权限。确认私钥是否有密码保护:如果你的id_rsa设置了密码短语,Maven默认不会自动记住这个密码。可以用Git Bash启动ssh-agent并添加私钥:
ssh-add C:/Users/user/.ssh/id_rsa输入一次私钥密码后,再回到IntelliJ运行Maven命令,此时IntelliJ应该能继承ssh-agent的会话,不用再输密码。
核对IntelliJ的Maven配置:确保IntelliJ使用的是你配置了settings.xml的Maven实例。打开「Settings」→「Build, Execution, Deployment」→「Build Tools」→「Maven」,检查:
- Maven home path是否是你预期的版本
- User settings file是否指向你修改过的settings.xml路径(注意别用了默认的文件)
验证Server ID匹配度:你的settings.xml里server的id是
example.repo,一定要保证pom.xml中distributionManagement节点下的repository/id和这个完全一致,大小写、拼写都不能错——Maven是严格根据id匹配服务器配置的,差一个字符都不行。切换到命令行测试:先关闭IntelliJ,打开命令提示符或Git Bash,进入项目根目录,直接执行你的Maven命令:
mvn -DskipTests clean compile package install deploy如果命令行能正常部署不用输密码,那问题就在IntelliJ上,可以试试重启IntelliJ,或者在IntelliJ的「Settings」→「Tools」→「SSH Configurations」里配置好对应的SSH连接,确保IDE能识别到你的私钥。
附上你提供的settings.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <settings> <servers> <server> <id>example.repo</id> <username>user</username> <privateKey>C:/Users/user/.ssh/id_rsa</privateKey> </server> </servers> </settings>
内容的提问来源于stack exchange,提问作者Madara Uchiwa

