传文件时有密码验证,代码中为了避免输入密码,可以在windows中生成公钥,然后放到linux的.ssh文件夹中;
步骤:
①windows安装openssh,方法参考https://blog.youkuaiyun.com/qq_33481635/article/details/118052151
使用powershell运行下面的指令
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’ ,查询有关openssh安装情况
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0等待ssh服务器安装
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0等待ssh客户端的安装
②生成密钥的方式,参考文档https://blog.youkuaiyun.com/weixin_46144186/article/details/124062702
使用powershell运行下面的指令
ssh-keygen,出现判断时,直接回车即可;
最后在路径C:\Users\Administrator.ssh下会生成一个id_rsa.pub,将这个文件拷贝到linux的./ssh目录下,并重命名文件的名称为authorized_keys,若有这个文件,直接追加:cat id_rsa.pub >> authorized_keys即可;
③现在可以在windows中使用命令行传文件了(使用的root,其他的用户好像不能传,能传再更新此文档)
SCP -r D:/Project/Publish/* root@192.168.1.11:/root/share/ --整个文件夹内文件,包含子文件夹
SCP D:\downloads\kafka_2.12-3.0.0.tgz root@192.168.1.11:/root/software --单个文件
④若使用代码的话,参考文档https://blog.youkuaiyun.com/shayueqing/article/details/124485102
(注意OpenSSH文件夹需整个的拷贝)
scp模仿上面的写法;(其他方式写的话吗,在waitForFinished时,总是返回false,使用上述的例子好像不会)
注意:代码使用scp时,安装路径下的C:\Windows\System32\OpenSSH路径可能会访问不到,所以将此路径拷贝一份出来,放到其他可以访问到的路径即可,代码就可以调通scp,这个坑了我一两天,使用批处理bat里面放scp的指令也不行,使用system()直接调用也不行,但是使用鼠标双击却可以,总之,代码调用时,就是没有权限能访问到openssh目录。
-------------------------------就这些内容,记录一下-------------------------------