在windows免密码向linux服务器传输文件

遇到一个需求,需要在windows下把文件或者目录上传到linux服务器,

这个功能用putty自带的pscp工具可以实现,但是每次都要手工输入密码,比较麻烦。

因为我希望在脚本里写一个自动上传文件的命令,不需要输入密码.

按网上的办法修改了服务器的配置文件里的PasswordAuthentication为yes,并在运行pscp时加上-pw passwd参数,

仍然不行.最后根据

https://blog.csdn.net/ppdouble/article/details/21623547

的办法实验成功.

具体过程为

1.下载最新的putty工具,我用的是2020/06/27发布的0.74版

2.安装好之后,在putty的安装目录下有一个puttygen工具,用来生成ssh登录的公钥和秘钥.这是本次实验的核心

(1)双击puttygen工具,出现下面的窗口

(2)单击Generate按钮,然后在上部的空白区域移动鼠标,以便生成随机的秘钥。

(3) 1分钟出现下面的结果,单击save private key按钮,把私钥保存到windows机器上的ssh.ppk里.

(4)单击save public key按钮,把公钥存到一个文本文件1.txt里,保存后的文件的内容如下所示.

但是这个公钥还不能直接被ssh服务器识别.,必须进行修改.具体的修改办法请继续往后看.

(5)在刚才的公钥文件1.txt中删除第1行第2行和最后一行,

即删除开头的

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20210111"
和结尾的

---- END SSH2 PUBLIC KEY ----(包括这一行结尾的回车符)

(6)在文件的开头加上ssh-rsa 然后把剩下的行连接起来,即去掉所有的回车符.最后的效果如下

即文件只有一行2列,第一列为加密协议类型,第2列加密后的文本字符串,然后保存.

(7)想办法把修改好的1.txt的内容复制到linux服务器上的

 /home/ubuntu/.ssh/authorized_keys这个文件的结尾.

authorized_keys的格式是一行一个公钥条目,ubuntu为实际的linux登录用户名.

(8)在windows的命令行中执行类似于下面的命令,ip要替换为服务器的实际地址.

ubuntu为第7步时的用户名

pscp -P 22  -i ssh.ppk  1.txt ubuntu@ip:/home/ubuntu/

执行会发现本机的1.txt就复制到了linux服务器的指定目录.

 

另外,如果是win10系统,则有更简便的办法.

(1)win10提供了一个简易的openssh软件,

安装办法为:

设置>>应用>>应用和功能>>管理可选功能>>添加功能 ,然后选择安装OpenSSH client.

安装好之后,如果命令行执行ssh命令成功就说明安装完毕.

(2)在命令行里执行ssh-keygen,生成本机的公钥和密钥对.

密码为空,执行后会提示公钥文件和私钥文件的存储路径.

对我的dell笔记本,公钥文件为C:\Users\DELL/.ssh/id_rsa.pub

(3)把刚才生成的id_rsa文件中的内容直接复制到

linux服务器上的 /home/ubuntu/.ssh/authorized_keys这个文件的结尾.不需要做任何改动.

(4)在windows下的命令行执行

scp 1.txt ubuntu@ip:/home/ubuntu/

执行成功,不需要输入密码了.

如果机器上没有openssh软件,可以从下面的地址下载,解压之后把解压后的目录加入到path 变量即可,不需要安装

https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.1.0.0p1-Beta/OpenSSH-Win64.zip

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值