
续上文:通过文件+小工具复制密码实现文件从windows上传到linux【Java开发】通过我想法很简单,在开发环境不健全的情况下(没有Jenkins做流水发布等),我能用自助的方法实现版本从wind......
续上文:
通过文件+小工具复制密码实现文件从windows上传到linux
【Java开发】通过
我想法很简单,在开发环境不健全的情况下(没有Jenkins做流水发布等),我能用自助的方法实现版本从windows发布到Linux服务器。
网上找到了参考代码:
片段代码如下:
引入依赖:
/groupIdartifactIdsshj//version/depency
片段代码:
;;/***@*/@DatapublicclassSshInfoItem{Stringhost;intport;StringuserName;Stringpassword;};;;;;;/***@*/publicclassSshClientUtil{publicstaticStringuploadFile(Stringhost,intport,StringuserName,Stringpassword,StringlocalFilePath,StringremoteDir){try(SSHClientssh=newSSHClient()){//如果是首次连接服务器或者确定服务器是可信的,//可以通过调整主机密钥验证策略来接受新的主机密钥。//例如,在使用sshj库(假设SSHClient来自sshj库)时,//可以使用PromiscuousVerifier(不推荐用于生产环境,仅用于测试或确认信任关系)。(newPromiscuousVerifier());(host,port);(userName,password);try(SFTPClientsftp=()){Filefile=newFile(localFilePath);((),remoteDir+"/"+());}return"ok";}catch(Exceptione){();}}publicstaticvoidmain(String[]args){SshInfoIteminfo=();Stringhost=();intport=();StringuserName=();Stringpassword=();StringlocalFilePath="C:\\Temps\\";StringremoteDir="/webapp/tmp";Stringresult=uploadFile(host,port,userName,password,localFilePath,remoteDir);(result);}}输出效果:
"C:\ProgramFiles\Java\\bin\""-javaagent:C:\ProgramFiles\JetBrains\\lib\idea_=58991:C:\ProgramFiles\JetBrains\\bin"-=UTF-8-classpath"C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\sunjce_;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\ext\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\ProgramFiles\Java\\jre\lib\;C:\Projects\zx\uni-user-devweb\code\uni-user-devweb\target\classes;C:\MyProgramFiles\maven\maven_jar\org\springframework\boot\spring-boot-starter-web\2.6.6\;C:\MyProgramFiles\maven\maven_jar\org\springframework\boot\spring-boot-starter\2.6.6\;C:\MyProgramFiles\maven\maven_jar\org\springframework\boot\spring-boot\2.6.6\;C:\MyProgramFiles\maven\maven_jar\org\springframework\boot\spring-boot-autoconfigure\2.6.6\;C:\MyProgramFiles\maven\maven_jar\org\springframework\boot\spring-boot-starter-logging\2.6.6\;C:\MyProgramFiles\maven\maven_jar\ch\qos\logback\logback-classic\1.2.11\;C:\MyProgramFiles\maven\maven_jar\ch\qos\logback\logback-core\1.2.11\;C:\MyProgramFiles\maven\maven_jar\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\;C:\MyProgramFiles\maven\maven_jar\org\apache\logging\log4j\log4j-api\2.17.2\;C:\MyProgramFiles\maven\maven_jar\org\slf4j\jul-to-slf4j\1.7.36\;C:\MyProgramFiles\maven\maven_jar\jakarta\annotation\\1.3.5\;C:\MyProgramFiles\maven\maven_jar\org\yaml\snakeyaml\1.29\;C:\MyProgramFiles\maven\maven_jar\org\springframework\boot\spring-boot-starter-json\2.6.6\;C:\MyProgramFiles\maven\maven_jar\com\fasterxml\jackson\core\jackson-databind\2.13.2.2\;C:\MyProgramFiles\maven\maven_jar\com\fasterxml\jackson\core\jackson-annotations\2.13.2\;C:\MyProgramFiles\maven\maven_jar\com\fasterxml\jackson\core\jackson-core\2.13.2\;C:\MyProgramFiles\maven\maven_jar\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.2\;C:\MyProgramFiles\maven\maven_jar\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.2\;C:\MyProgramFiles\maven\maven_jar\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.2\;C:\MyProgramFiles\maven\maven_jar\org\springframework\boot\spring-boot-starter-tomcat\2.6.6\;C:\MyProgramFiles\maven\maven_jar\org\apache\tomcat\embed\tomcat-embed-core\9.0.60\;C:\MyProgramFiles\maven\maven_jar\org\apache\tomcat\embed\tomcat-embed-el\9.0.60\;C:\MyProgramFiles\maven\maven_jar\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.60\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-web\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-beans\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-webmvc\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-aop\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-context\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-expression\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-core\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\springframework\spring-jcl\5.3.18\;C:\MyProgramFiles\maven\maven_jar\org\assertj\assertj-core\3.21.0\;C:\MyProgramFiles\maven\maven_jar\commons-codec\commons-codec\1.11\;C:\MyProgramFiles\maven\maven_jar\org\apache\kafka\kafka-clients\2.5.0\;C:\MyProgramFiles\maven\maven_jar\com\github\luben\zstd-jni\1.4.4-7\;C:\MyProgramFiles\maven\maven_jar\org\lz4\lz4-java\1.7.1\;C:\MyProgramFiles\maven\maven_jar\org\xerial\snappy\snappy-java\1.1.7.3\;C:\MyProgramFiles\maven\maven_jar\org\slf4j\slf4j-api\1.7.36\;C:\MyProgramFiles\maven\maven_jar\dom4j\dom4j\2.1.3\;C:\MyProgramFiles\maven\maven_jar\mysql\mysql-connector-java\8.0.28\;C:\MyProgramFiles\maven\maven_jar\com\oracle\ojdbc14\10.2.0.4.0\;C:\MyProgramFiles\maven\maven_jar\com\alibaba\fastjson\1.2.83\;C:\MyProgramFiles\maven\maven_jar\commons-lang\commons-lang\2.5\;C:\MyProgramFiles\maven\maven_jar\redis\clients\jedis\4.2.3\;C:\MyProgramFiles\maven\maven_jar\org\apache\commons\commons-pool2\2.11.1\;C:\MyProgramFiles\maven\maven_jar\org\json\json\20211205\;C:\MyProgramFiles\maven\maven_jar\com\google\code\gson\gson\2.8.9\;C:\MyProgramFiles\maven\maven_jar\org\apache\activemq\activemq-pool\5.17.2\;C:\MyProgramFiles\maven\maven_jar\org\apache\activemq\activemq-jms-pool\5.16.4\;C:\MyProgramFiles\maven\maven_jar\org\apache\geronimo\specs\geronimo-jms_1.1_spec\1.1.1\geronimo-jms_1.1_;C:\MyProgramFiles\maven\maven_jar\org\apache\activemq\activemq-client\5.16.4\;C:\MyProgramFiles\maven\maven_jar\org\fusesource\hawtbuf\hawtbuf\1.11\;C:\MyProgramFiles\maven\maven_jar\org\apache\geronimo\specs\geronimo-j2ee-management_1.1_spec\1.0.1\geronimo-j2ee-management_1.1_;C:\MyProgramFiles\maven\maven_jar\org\apache\geronimo\specs\geronimo-jta_1.1_spec\1.1.1\geronimo-jta_1.1_;C:\MyProgramFiles\maven\maven_jar\org\projectlombok\lombok\1.18.22\;C:\MyProgramFiles\maven\maven_jar\org\apache\poi\poi\3.10.1\;C:\MyProgramFiles\maven\maven_jar\org\apache\poi\poi-ooxml\3.10.1\;C:\MyProgramFiles\maven\maven_jar\org\apache\poi\poi-ooxml-schemas\3.10.1\;C:\MyProgramFiles\maven\maven_jar\org\apache\xmlbeans\xmlbeans\2.6.0\;C:\MyProgramFiles\maven\maven_jar\stax\stax-api\1.0.1\;C:\MyProgramFiles\maven\maven_jar\com\github\pagehelper\pagehelper\5.3.2\;C:\MyProgramFiles\maven\maven_jar\com\github\jsqlparser\jsqlparser\4.5\;C:\MyProgramFiles\maven\maven_jar\com\xuxueli\xxl-job-core\2.3.0\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-all\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-buffer\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-dns\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-haproxy\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-http\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-http2\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-memcache\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-mqtt\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-redis\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-smtp\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-socks\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-stomp\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-codec-xml\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-common\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-handler\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-handler-proxy\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-resolver\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-resolver-dns\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-rxtx\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-sctp\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-udt\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-classes-epoll\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-native-unix-common\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-classes-kqueue\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-resolver-dns-classes-macos\4.1.75.Final\;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-native-epoll\4.1.75.Final\_64.jar;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-native-epoll\4.1.75.Final\_64.jar;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-native-kqueue\4.1.75.Final\_64.jar;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-transport-native-kqueue\4.1.75.Final\_64.jar;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-resolver-dns-native-macos\4.1.75.Final\_64.jar;C:\MyProgramFiles\maven\maven_jar\io\netty\netty-resolver-dns-native-macos\4.1.75.Final\_64.jar;C:\MyProgramFiles\maven\maven_jar\org\codehaus\groovy\groovy\3.0.10\;C:\MyProgramFiles\maven\maven_jar\com\alipay\sdk\alipay-sdk-java\4.34.90.ALL\;C:\MyProgramFiles\maven\maven_jar\commons-logging\commons-logging\1.1.1\;C:\MyProgramFiles\maven\maven_jar\org\bouncycastle\bcprov-jdk15on\1.62\;C:\MyProgramFiles\maven\maven_jar\javax\mail\mail\1.4.7\;C:\MyProgramFiles\maven\maven_jar\javax\activation\activation\1.1\;C:\MyProgramFiles\maven\maven_jar\cn\hutool\hutool-all\5.8.20\;C:\MyProgramFiles\maven\maven_jar\org\apache\httpcomponents\httpclient\4.5.12\;C:\MyProgramFiles\maven\maven_jar\org\apache\httpcomponents\httpcore\4.4.15\;C:\MyProgramFiles\maven\maven_jar\org\jasypt\jasypt\1.9.3\;C:\MyProgramFiles\maven\maven_jar\com\microsoft\sqlserver\sqljdbc42\4.2\;C:\MyProgramFiles\maven\maven_jar\commons-net\commons-net\3.10.0\;C:\MyProgramFiles\maven\maven_jar\com\belerweb\pinyin4j\2.5.1\;C:\MyProgramFiles\maven\maven_jar\net\schmizz\sshj\0.10.0\;C:\MyProgramFiles\maven\maven_jar\org\bouncycastle\bcpkix-jdk15on\1.50\":42:25.293[main]:42:25.953[main]:42:26.022[main]:_0_9_218:42:26.052[main]:_7.418:42:26.053[main]`null`18:42:26.053[main]_MSG_KEXINIT18:42:26.058[main]`SOME`18:42:26.058[main]:42:26.099[reader]_MSG_KEXINIT18:42:26.100[reader]:[kex=diffie-hellman-group14-sha1;sig=ecdsa-sha2-nistp256;c2sCipher=aes128-ctr;s2cCipher=aes128-ctr;c2sMAC=hmac-sha1;s2cMAC=hmac-sha1;c2sComp=none;s2cComp=none]18:42:26.397[reader]_MSG_KEXDH_INIT18:42:26.434[reader]:42:26.434[reader]_MSG_KEXDH_REPLY18:42:26.435[reader]$3-Keyalgo:ecdsa-sha2-nistp256,Keycurve:nistp256,KeyLen:65,0x04:4x:[-101,-11,-113,-94,23,-7,-124,54,-112,-43,82,-101,-125,9,-58,-86,-108,-72,-22,90,60,59,-5,73,1,-9,37,-118,-59,109,-52,-50]y:[-78,-121,84,25,86,87,55,32,22,-116,108,-74,-116,13,-52,71,1,51,31,-106,3,-83,-110,-44,-54,-120,40,9,46,103,22,80]18:42:26.586[reader]@7bd215a918:42:26.586[reader]_MSG_NEWKEYS18:42:26.586[reader]_MSG_NEWKEYS18:42:26.590[reader]`null`18:42:26.590[reader]`SOME`18:42:26.590[main]:42:26.592[main]`null`18:42:26.593[main]_MSG_SERVICE_REQUESTforssh-userauth18:42:26.593[main]:42:26.667[reader]`SOME`18:42:26.667[main]:42:26.667[main]`null`18:42:26.668[main]`password`auth18:42:26.668[main][AccountResource]user@192.168.0.118:42:26.668[main]:42:26.698[reader]`true`18:42:26.699[main]`password`authsuccessful18:42:26.699[main]:42:26.707[main]`session`channel(0/open18:42:26.730[reader]_MSG_UNIMPLEMENTEDforpacket0/opento`SOME`18:42:26.756[main]`sftp`subsystem18:42:26.756[main]`subsystem`18:42:26.757[main]/chanreqforsubsystemto`SOME`18:42:26.781[main]$Remote-Consumingby9downto209714318:42:26.799[reader]$Local-Consumingby154downto209699818:42:26.801[main]:42:26.807[main]``(2016245bytes)18:42:26.808[main]{1;STAT}18:42:26.809[main]$Remote-Consumingby33downto209711018:42:26.809[main]/118:42:26.834[reader]$Local-Consumingby41downto209695718:42:26.835[sftpreader]:42:26.836[sftpreader]/1to`Buffer[rpos=5,wpos=37,size=37]`18:42:26.840[main]:/webapp/tmp/:42:26.840[main]{2;OPEN}18:42:26.841[main]$Remote-Consumingby41downto209706918:42:26.841[main]/218:42:26.862[reader]$Local-Consumingby17downto209694018:42:26.862[sftpreader]:42:26.862[sftpreader]/2to`Buffer[rpos=5,wpos=13,size=13]`18:42:26.865[main]{3;WRITE}18:42:26.872[main]$Remote-Consumingby32768downto206430118:42:26.875[main]{4;WRITE}18:42:26.877[main]$Remote-Consumingby32768downto203153318:42:26.877[main]{5;WRITE}18:42:26.921[main]$Remote-Consumingby32768downto199876518:42:26.921[main]{6;WRITE}18:42:26.922[main]$Remote-Consumingby32768downto196599718:42:26.922[main]{7;WRITE}18:42:26.923[main]$Remote-Consumingby32768downto193322918:42:26.923[main]{8;WRITE}18:42:26.924[reader]$Local-Consumingby28downto209691218:42:26.925[sftpreader]:42:26.925[sftpreader]/3to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.947[main]$Remote-Consumingby32768downto190046118:42:26.947[reader]$Local-Consumingby28downto209688418:42:26.947[main]{9;WRITE}18:42:26.947[sftpreader]:42:26.947[sftpreader]/4to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.947[main]$Remote-Consumingby32768downto186769318:42:26.947[main]{10;WRITE}18:42:26.948[main]$Remote-Consumingby32768downto183492518:42:26.948[main]{11;WRITE}18:42:26.948[main]$Remote-Consumingby32768downto180215718:42:26.948[main]{12;WRITE}18:42:26.949[main]$Remote-Consumingby32768downto176938918:42:26.949[main]{13;WRITE}18:42:26.960[reader]:42:26.960[main]$Remote-Consumingby32768downto173662118:42:26.960[reader]$Remote-Increasingby98387upto183500818:42:26.960[main]{14;WRITE}18:42:26.960[reader]$Local-Consumingby28downto209685618:42:26.960[sftpreader]:42:26.960[sftpreader]/5to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.967[main]$Remote-Consumingby32768downto180224018:42:26.967[main]{15;WRITE}18:42:26.967[reader]$Local-Consumingby28downto209682818:42:26.967[sftpreader]:42:26.967[sftpreader]/6to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.975[main]$Remote-Consumingby32768downto176947218:42:26.975[reader]$Local-Consumingby28downto209680018:42:26.975[reader]$Local-Consumingby28downto209677218:42:26.975[main]{16;WRITE}18:42:26.975[sftpreader]:42:26.975[sftpreader]/7to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.975[sftpreader]:42:26.975[sftpreader]/8to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.975[main]$Remote-Consumingby32768downto173670418:42:26.975[main]{17;WRITE}18:42:26.976[main]$Remote-Consumingby32768downto170393618:42:26.976[main]{18;WRITE}18:42:26.976[main]$Remote-Consumingby32768downto167116818:42:26.977[main]{19;WRITE}18:42:26.977[main]$Remote-Consumingby32768downto163840018:42:26.978[main]{20;WRITE}18:42:26.979[main]$Remote-Consumingby32768downto160563218:42:26.979[main]{21;WRITE}18:42:26.980[main]$Remote-Consumingby32768downto157286418:42:26.980[main]{22;WRITE}18:42:26.980[main]$Remote-Consumingby32768downto154009618:42:26.980[main]{23;WRITE}18:42:26.981[main]$Remote-Consumingby32768downto150732818:42:26.981[main]{24;WRITE}18:42:26.981[main]$Remote-Consumingby32768downto147456018:42:26.981[main]{25;WRITE}18:42:26.993[main]$Remote-Consumingby32768downto144179218:42:26.993[reader]:42:26.993[reader]$Remote-Increasingby131072upto157286418:42:26.993[main]/918:42:26.993[reader]$Local-Consumingby28downto209674418:42:26.993[sftpreader]:42:26.993[reader]$Local-Consumingby28downto209671618:42:26.993[sftpreader]/9to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.993[sftpreader]:42:26.993[main]{26;WRITE}18:42:26.993[sftpreader]/10to`Buffer[rpos=5,wpos=24,size=24]`18:42:26.994[main]$Remote-Consumingby32768downto154009618:42:26.994[main]{27;WRITE}18:42:27.003[main]$Remote-Consumingby32768downto150732818:42:27.003[reader]$Local-Consumingby28downto209668818:42:27.003[main]/1118:42:27.003[reader]$Local-Consumingby28downto209666018:42:27.003[sftpreader]:42:27.003[sftpreader]/11to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.003[sftpreader]:42:27.003[sftpreader]/12to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.003[main]{28;WRITE}18:42:27.004[main]$Remote-Consumingby32768downto147456018:42:27.004[reader]:42:27.004[reader]$Remote-Increasingby131072upto160563218:42:27.004[main]{29;WRITE}18:42:27.004[reader]$Local-Consumingby28downto209663218:42:27.004[sftpreader]:42:27.004[sftpreader]/13to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.005[main]$Remote-Consumingby32768downto157286418:42:27.005[main]{30;WRITE}18:42:27.010[main]$Remote-Consumingby32768downto154009618:42:27.010[main]/1418:42:27.012[reader]$Local-Consumingby28downto209660418:42:27.012[sftpreader]:42:27.012[reader]$Local-Consumingby28downto209657618:42:27.012[sftpreader]/14to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.012[sftpreader]:42:27.012[main]{31;WRITE}18:42:27.012[sftpreader]/15to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.014[main]$Remote-Consumingby32768downto150732818:42:27.014[main]{32;WRITE}18:42:27.029[main]$Remote-Consumingby32768downto147456018:42:27.029[reader]$Local-Consumingby28downto209654818:42:27.029[main]/1618:42:27.029[sftpreader]:42:27.029[sftpreader]/16to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.029[main]{33;WRITE}18:42:27.032[main]$Remote-Consumingby32768downto144179218:42:27.032[reader]:42:27.032[reader]$Remote-Increasingby131072upto157286418:42:27.032[main]/1718:42:27.032[reader]$Local-Consumingby28downto209652018:42:27.032[sftpreader]:42:27.032[sftpreader]/17to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.032[reader]$Local-Consumingby28downto209649218:42:27.032[sftpreader]:42:27.032[sftpreader]/18to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.032[reader]$Local-Consumingby28downto209646418:42:27.032[main]{34;WRITE}18:42:27.032[sftpreader]:42:27.032[sftpreader]/19to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.033[main]$Remote-Consumingby32768downto154009618:42:27.033[main]{35;WRITE}18:42:27.034[reader]$Local-Consumingby28downto209643618:42:27.034[sftpreader]:42:27.034[sftpreader]/20to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.034[reader]:42:27.034[reader]$Remote-Increasingby131072upto167116818:42:27.034[reader]$Local-Consumingby28downto209640818:42:27.034[sftpreader]:42:27.035[sftpreader]/21to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.035[main]$Remote-Consumingby32768downto163840018:42:27.035[main]{36;WRITE}18:42:27.036[main]$Remote-Consumingby32768downto160563218:42:27.036[main]{37;WRITE}18:42:27.036[main]$Remote-Consumingby32768downto157286418:42:27.036[main]{38;WRITE}18:42:27.037[main]$Remote-Consumingby32768downto154009618:42:27.037[main]/2218:42:27.050[reader]$Local-Consumingby28downto209638018:42:27.050[sftpreader]:42:27.050[sftpreader]/22to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.051[main]{39;WRITE}18:42:27.052[main]$Remote-Consumingby32768downto150732818:42:27.052[main]/2318:42:27.059[reader]$Local-Consumingby28downto209635218:42:27.059[sftpreader]:42:27.059[sftpreader]/23to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.059[main]{40;WRITE}18:42:27.060[reader]$Local-Consumingby28downto209632418:42:27.061[reader]:42:27.061[reader]$Remote-Increasingby131072upto163840018:42:27.061[sftpreader]:42:27.061[main]$Remote-Consumingby32768downto160563218:42:27.061[reader]$Local-Consumingby28downto209629618:42:27.061[sftpreader]/24to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.061[reader]$Local-Consumingby28downto209626818:42:27.061[sftpreader]:42:27.061[reader]$Local-Consumingby28downto209624018:42:27.061[sftpreader]/25to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.061[sftpreader]:42:27.061[sftpreader]/26to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.061[reader]$Local-Consumingby28downto209621218:42:27.061[main]{41;WRITE}18:42:27.061[reader]:42:27.061[reader]$Remote-Increasingby131072upto173670418:42:27.061[sftpreader]:42:27.061[sftpreader]/27to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.061[reader]$Local-Consumingby28downto209618418:42:27.061[sftpreader]:42:27.061[sftpreader]/28to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.062[sftpreader]:42:27.062[sftpreader]/29to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.063[main]$Remote-Consumingby32768downto170393618:42:27.063[main]{42;WRITE}18:42:27.065[main]$Remote-Consumingby32768downto167116818:42:27.065[main]{43;WRITE}18:42:27.066[main]$Remote-Consumingby32768downto163840018:42:27.066[main]{44;WRITE}18:42:27.067[main]$Remote-Consumingby32768downto160563218:42:27.067[main]{45;WRITE}18:42:27.068[main]$Remote-Consumingby32768downto157286418:42:27.068[main]{46;WRITE}18:42:27.069[main]$Remote-Consumingby32768downto154009618:42:27.069[main]/3018:42:27.075[reader]$Local-Consumingby28downto209615618:42:27.075[reader]$Local-Consumingby28downto209612818:42:27.075[reader]$Local-Consumingby28downto209610018:42:27.075[sftpreader]:42:27.075[reader]:42:27.076[reader]$Remote-Increasingby131072upto167116818:42:27.076[sftpreader]/30to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.077[sftpreader]:42:27.077[sftpreader]/31to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.077[sftpreader]:42:27.077[sftpreader]/32to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.077[main]{47;WRITE}18:42:27.077[reader]$Local-Consumingby28downto209607218:42:27.078[sftpreader]:42:27.078[sftpreader]/33to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.079[main]$Remote-Consumingby32768downto163840018:42:27.079[main]{48;WRITE}18:42:27.080[main]$Remote-Consumingby32768downto160563218:42:27.080[main]{49;WRITE}18:42:27.080[main]$Remote-Consumingby32768downto157286418:42:27.080[main]{50;WRITE}18:42:27.081[main]$Remote-Consumingby32768downto154009618:42:27.081[main]/3418:42:27.082[reader]$Local-Consumingby28downto209604418:42:27.082[sftpreader]:42:27.082[sftpreader]/34to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.082[reader]$Local-Consumingby28downto209601618:42:27.082[sftpreader]:42:27.082[sftpreader]/35to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.082[main]{51;WRITE}18:42:27.082[reader]$Local-Consumingby28downto209598818:42:27.082[sftpreader]:42:27.082[reader]:42:27.082[reader]$Remote-Increasingby131072upto167116818:42:27.082[sftpreader]/36to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.082[reader]$Local-Consumingby28downto209596018:42:27.082[sftpreader]:42:27.082[sftpreader]/37to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.083[main]$Remote-Consumingby32768downto163840018:42:27.083[main]{52;WRITE}18:42:27.083[main]$Remote-Consumingby32768downto160563218:42:27.083[main]{53;WRITE}18:42:27.084[main]$Remote-Consumingby32768downto157286418:42:27.084[main]{54;WRITE}18:42:27.084[main]$Remote-Consumingby32768downto154009618:42:27.084[main]/3818:42:27.089[reader]$Local-Consumingby28downto209593218:42:27.089[reader]$Local-Consumingby28downto209590418:42:27.089[sftpreader]:42:27.089[sftpreader]/38to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.090[sftpreader]:42:27.090[sftpreader]/39to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.090[main]{55;WRITE}18:42:27.090[reader]$Local-Consumingby28downto209587618:42:27.090[sftpreader]:42:27.090[sftpreader]/40to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.090[main]$Remote-Consumingby32768downto150732818:42:27.091[main]{56;WRITE}18:42:27.091[main]$Remote-Consumingby32768downto147456018:42:27.091[main]{57;WRITE}18:42:27.092[main]$Remote-Consumingby32768downto144179218:42:27.092[main]/4118:42:27.093[reader]:42:27.093[reader]$Remote-Increasingby131072upto157286418:42:27.093[reader]$Local-Consumingby28downto209584818:42:27.093[sftpreader]:42:27.093[sftpreader]/41to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.093[main]{58;WRITE}18:42:27.094[main]$Remote-Consumingby32768downto154009618:42:27.094[main]/4218:42:27.101[reader]$Local-Consumingby28downto209582018:42:27.101[sftpreader]:42:27.101[sftpreader]/42to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.101[main]{59;WRITE}18:42:27.101[main]$Remote-Consumingby32768downto150732818:42:27.102[main]/4318:42:27.105[reader]$Local-Consumingby28downto209579218:42:27.105[sftpreader]:42:27.105[sftpreader]/43to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.105[reader]$Local-Consumingby28downto209576418:42:27.105[reader]:42:27.105[sftpreader]:42:27.105[reader]$Remote-Increasingby131072upto163840018:42:27.105[main]{60;WRITE}18:42:27.105[sftpreader]/44to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.105[reader]$Local-Consumingby28downto209573618:42:27.106[reader]$Local-Consumingby28downto209570818:42:27.106[sftpreader]:42:27.106[sftpreader]/45to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.106[sftpreader]:42:27.106[sftpreader]/46to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.106[main]$Remote-Consumingby32768downto160563218:42:27.106[main]{61;WRITE}18:42:27.107[main]$Remote-Consumingby32768downto157286418:42:27.107[main]{62;WRITE}18:42:27.107[main]$Remote-Consumingby32768downto154009618:42:27.107[main]{63;WRITE}18:42:27.108[main]$Remote-Consumingby32768downto150732818:42:27.108[main]/4718:42:27.140[reader]$Local-Consumingby28downto209568018:42:27.140[sftpreader]:42:27.140[sftpreader]/47to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.140[main]{64;WRITE}18:42:27.140[main]$Remote-Consumingby19195downto148813318:42:27.140[main]/4818:42:27.152[reader]$Local-Consumingby28downto209565218:42:27.152[reader]:42:27.152[reader]$Remote-Increasingby131072upto161920518:42:27.152[sftpreader]:42:27.152[sftpreader]/48to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.152[reader]$Local-Consumingby28downto209562418:42:27.153[reader]$Local-Consumingby28downto209559618:42:27.153[sftpreader]:42:27.153[main]/4918:42:27.153[sftpreader]/49to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.153[sftpreader]:42:27.153[sftpreader]/50to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.153[main]/5118:42:27.154[reader]$Local-Consumingby28downto209556818:42:27.154[reader]$Local-Consumingby28downto209554018:42:27.154[sftpreader]:42:27.154[reader]:42:27.154[sftpreader]/51to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.154[reader]$Remote-Increasingby131072upto175027718:42:27.154[sftpreader]:42:27.154[reader]$Local-Consumingby28downto209551218:42:27.154[reader]$Local-Consumingby28downto209548418:42:27.154[sftpreader]/52to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.154[sftpreader]:42:27.154[sftpreader]/53to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.154[main]/5418:42:27.154[sftpreader]:42:27.155[sftpreader]/54to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.156[main]/5518:42:27.160[reader]$Local-Consumingby28downto209545618:42:27.160[sftpreader]:42:27.160[sftpreader]/55to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.160[main]/5618:42:27.161[reader]$Local-Consumingby28downto209542818:42:27.162[reader]:42:27.162[reader]$Remote-Increasingby131072upto188134918:42:27.162[sftpreader]:42:27.162[sftpreader]/56to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.162[main]/5718:42:27.164[reader]$Local-Consumingby28downto209540018:42:27.164[sftpreader]:42:27.164[sftpreader]/57to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.164[main]/5818:42:27.166[reader]$Local-Consumingby28downto209537218:42:27.167[sftpreader]:42:27.167[sftpreader]/58to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.167[main]/5918:42:27.168[reader]$Local-Consumingby28downto209534418:42:27.168[sftpreader]:42:27.168[sftpreader]/59to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.168[main]/6018:42:27.193[reader]$Local-Consumingby28downto209531618:42:27.193[reader]:42:27.193[reader]$Remote-Increasingby131072upto201242118:42:27.193[sftpreader]:42:27.193[reader]$Local-Consumingby28downto209528818:42:27.193[sftpreader]/60to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.193[reader]$Local-Consumingby28downto209526018:42:27.193[sftpreader]:42:27.193[sftpreader]/61to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.193[sftpreader]:42:27.193[sftpreader]/62to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.193[main]/6318:42:27.198[reader]$Local-Consumingby28downto209523218:42:27.198[reader]$Local-Consumingby28downto209520418:42:27.198[sftpreader]:42:27.198[sftpreader]/63to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.198[main]/6418:42:27.198[sftpreader]:42:27.198[sftpreader]/64to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.198[main](5912.880654091591KiB/s)18:42:27.198[main]`RemoteResource{/webapp/tmp/}`18:42:27.198[main]{65;CLOSE}18:42:27.198[main]$Remote-Consumingby17downto201240418:42:27.198[main]/6518:42:27.219[reader]$Local-Consumingby28downto209517618:42:27.219[sftpreader]:42:27.219[sftpreader]/65to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.222[main]{66;SETSTAT}18:42:27.222[main]$Remote-Consumingby49downto201235518:42:27.222[main]/6618:42:27.243[reader]$Local-Consumingby28downto209514818:42:27.243[sftpreader]:42:27.243[sftpreader]/66to`Buffer[rpos=5,wpos=24,size=24]`18:42:27.243[main]:42:27.244[main])18:42:27.266[reader]#0/closeto`SOME`18:42:27.268[main]_APPLICATION18:42:27.268[main]:[BY_APPLICATION]Disconnected18:42:27.269[main]_MSG_DISCONNECT:reason=[BY_APPLICATION],msg=[]18:42:27.270[main]`SOME`ok18:42:27.270[reader]说明:
没有设置
(newPromiscuousVerifier());
执行报错:
Couldnotverify`ecdsa-sha2-nistp256`hostkeywithfingerprint`1e:42:09:76:39:55:fa:7d:7e:f8:c8:eb:fd:be:63:e2`for`192.168.0.1`onport22
豆包AI咨询看到
就是:
问题根源当使用SSHClient时出现“Couldnotverifyecdsa-sha2-nistp256hostkeywithfingerprint”错误,表明在SSH连接过程中主机密钥验证失败。这可能是因为客户端首次连接到服务器,没有保存服务器的主机密钥指纹;或者服务器的主机密钥发生了变化,而客户端仍在使用旧的指纹进行验证;也可能是存在网络问题导致获取到的指纹不准确。
解决方案首次连接或确认服务器可信时如果是首次连接服务器或者确定服务器是可信的,可以通过调整主机密钥验证策略来接受新的主机密钥。例如,在使用sshj库(假设SSHClient来自sshj库)时,可以使用PromiscuousVerifier(不推荐用于生产环境,仅用于测试或确认信任关系)。
信任的主机,我选择了添加这行代码解决:
(newPromiscuousVerifier());
代码可以改成如下:
;;;;;;/***@*/publicclassSshClientUtil{publicstaticStringuploadFile(Stringhost,intport,StringuserName,Stringpassword,booleanhostKeyVerifierFlag,StringlocalFilePath,StringremoteDir){try(SSHClientssh=newSSHClient()){//如果是首次连接服务器或者确定服务器是可信的,//可以通过调整主机密钥验证策略来接受新的主机密钥。//例如,在使用sshj库(假设SSHClient来自sshj库)时,//可以使用PromiscuousVerifier(不推荐用于生产环境,仅用于测试或确认信任关系)。if(hostKeyVerifierFlag){(newPromiscuousVerifier());}(host,port);(userName,password);try(SFTPClientsftp=()){Filefile=newFile(localFilePath);((),remoteDir+"/"+());}return"ok";}catch(Exceptione){();}}publicstaticvoidmain(String[]args){SshInfoIteminfo=();Stringhost=();intport=();StringuserName=();Stringpassword=();booleanhostKeyVerifierFlag=(()!=().intValue()==1);StringlocalFilePath="C:\\Temps\\";StringremoteDir="/webapp/tmp";Stringresult=uploadFile(host,port,userName,password,hostKeyVerifierFlag,localFilePath,remoteDir);(result);}}