需求:从windows机器向linux服务器上传文件,越方便越好!
平时习惯使用xshell,倒是可以使用xftp去手工上传文件,如果是偶尔还行,但如果是周期性的那就不可取了,思路应该是能使用程序自己上传,即执行个.bat脚本就可以完成才对,xftp并没找到命令行的方式,最后选用winscp。
一、winscp命令行方式上传文件
test_scp.txt
option batch continue
option confirm off
option transfer binary ## 前面三行命令不细说,请自己搜索
open sftp://admin:password@10.35.150.158 ## 登录用户:admin,登录密码:password,linux主机:10.35.150.158
put D:\backup\gtp\gtp-service.war /home/admin/ ## 表示把windows上的gtp-service.war上传到linux对应的目录
call sudo cp -rp /home/admin/gtp-service.war /apps/tomcat/webapps/
call sudo systemctl restart tomcat ## 强大的call:可以执行linux任意命令
exit
windows.bat
winscp /console /script=D:\backup\log_search\test_scp.txt ## 指定test_scp.txt的位置
综上所述,写好脚本后,只需双击windows.bat,就能自动上传文件了。但会发现个问题:登录用户密码暴露在脚本中,这很不安全,所以下面介绍免密方式。
二、winscp免密方式上传文件
1. 制作linux密钥
linux 7.4服务器:10.35.150.158
在一开始时,/home/admin目录下肯定是没有.ssh/目录,我们先使用命令生成个目录结构
ssh-keygen -t rsa ## 会在用户目录下自动生成.ssh目录,包含公钥私钥文件
因为此机器是需被远程的,所以我们只需关注authorized_keys文件,这个文件不是自动生成的,需要手工新建
touch .ssh/authorized_keys ## 新建空文件
chmod 600 .ssh/authorized_keys ## 权限必须是600
接下来,我们需要制作windows机器的公钥私钥对,我们使用winscp自带的putty来制作。
2. 制作windows密钥
点击Generate按键,按要求随机移动鼠标,等待生成完成。
保存好我们的私钥文件(我保存成my.ppk),并把生成的公钥信息复制到前文authorized_keys文件中。
3. 免密登录
免密操作版test_scp.txt
option batch continue
option confirm off
option transfer binary
open sftp://admin@10.35.150.158 -privatekey=D:\backup\gtp\my.ppk ## 指定私钥文件
put D:\backup\gtp\gtp-service.war /home/admin/
call sudo cp -rp /home/admin/gtp-service.war /apps/tomcat/webapps/
call sudo systemctl restart tomcat
exit
windows.bat
winscp /console /script=D:\backup\log_search\test_scp.txt ## 指定test_scp.txt的位置
大功告成!!!!
感谢链接:
https://www.593668.com/7/5216.html
https://www.linuxidc.com/Linux/2019-07/159392.htm
https://blog.csdn.net/weixin_30484739/article/details/99408367