无需密码通过scp命令+key的方式实现文件传输

如果觉得scp每次都要输入密码很麻烦, 那么这是解决方案.
假设你平时在windows上开发,用户名是xiang, 你有一台Ubuntu服务器wdksw.com, 用户名是root.现在你准备上传一些文件到服务器上.
为方便叙述,w表示windows, u表示Ubuntu.w$表示在windows端输入的命令, u$表示在Ubuntu端输入的命令.

  • 首先在w端生成一对key

w$ssh-keygen -t rsa
如果一直按enter,则会在C:\Users\xiang\.ssh文件夹下生成id_rsa和id_rsa.pub两个文件.

  • 其次确保u端的ssh配置允许root用户登录

u$vim /etc/ssh/sshd_config
确保PermitRootLogin为yes.我的服务器默认就是yes.因此无需更改.

  • 将win端的id_rsa.pub上传到服务器的~/keys文件夹

u$mkdir ~/keys

上传文件:
w$scp ~/.ssh/id_rsa.pub root@wdksw.com:~/keys

  • 将上传的key添加到ssh的授权列表

如果.ssh文件夹不存在,创建之.
u$mkdir ~/.ssh
u$cat ~/keys/id_rsa.pub>>~/.ssh/authorized_keys

  • 搞定

win端再尝试使用scp命令, 你会发现无需输入密码.

  •  扩展

接下来,你可以在win端写个Python脚本, 实现一个简易的文件推送功能

比如你想实现一种同步盘的功能,自动同步发生变化的文件

 

posted @ 2016-02-26 10:31  LisPythoniC  阅读(1164)  评论(0编辑  收藏  举报