Linux 下的 SCP 无密码拷贝文件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
hellojammy
V2EX    Linux

Linux 下的 SCP 无密码拷贝文件

 
  •   hellojammy
    hellojammy 2016-12-10 13:05:31 +08:00 5823 次点击
    这是一个创建于 3297 天前的主题,其中的信息可能已经有所发展或是发生改变。

    点击访问原文 您还可以加入全栈技术交流群( QQ 群号: 254842154 )


    今天给大家介绍一种在 Linux 服务器之间自动拷贝文件的方法。主要使用了基于 ssh 的并且安全的文件 copy 技术 scp 。这种方法安全并且便捷,无需输入登录密码

    我们先设定一下场景和需求:每天凌晨 4 点 30 分,服务器 A 的文件自动同步到服务器 B 。我们可以认为服务器 A 是服务端,服务器 B 是客户端。下面演示如何达到这个目标。

    ①在客户端(服务器 B )生成一对公钥和秘钥。使用 ssh-keygen -t rsa生成,一路回车即可;

    9.pic.jpg

    ②进入秘钥文件夹查看文件。其中id_rsa.pub是公钥,id_rsa是私钥;

    //进入文件夹 cd ~/.ssh 

    ③打开id_rsa.pub文件,并把它的内容拷贝到服务端(服务器 A )的 authorized_keys 文件中;

    ④在客户端(服务器 B )编写文件拷贝的脚本;

    #!/bin/sh #copy data from remote server. you should copy your client's id_rsa.pub content to the server's ~/.ssh/authorized_keys file #this script run at client scp -r [email protected]:/var/www/html/hellojammy/* /var/www/html/hellojammy/ exit 0; 

    其中,x.xx.xxx.xxxx是服务端(服务器 A )的 ip 地址。这段脚本的作用是拷贝服务器 B 的/var/www/html/hellojammy/目录下的所有文件(包括子文件夹下的文件),到服务器 A 的/var/www/html/hellojammy/目录。脚本文件为 scp_test.sh

    ⑤在客户端(服务器 B )编写定时任务脚本,执行文件拷贝的命令。

    //编辑定时任务 crontab -e //添加定时任务 30 4 * * * /bin/sh /data/script/scp_test.sh > /data/script/logs/scp_test.log 2>&1 

    至此,完成!

    35 条回复    2016-12-11 21:28:39 +08:00
    wizardoz
        1
    wizardoz  
       2016-12-10 13:42:08 +08:00
    ③打开 id_rsa.pub 文件,并把它的内容拷贝到服务端(服务器 A )的 authorized_keys 文件中;
    =====================================================================
    直接编辑 authorized_keys 文件不但麻烦,还可能因为文件权限问题导致别人也登陆不了。
    这里介绍 ssh-copy-id 命令会比较好。
    seanlook
        2
    seanlook  
       2016-12-10 14:02:00 +08:00
    用 rsync 不就挺好,增量拷贝
    gamexg
        3
    gamexg  
       2016-12-10 14:07:19 +08:00 via Android
    zstack
        4
    zstack  
       2016-12-10 14:09:32 +08:00   1
    其实在 ssh-keygen 之后, 2 、 3 步只需要用这个命令就可以完成 ssh 公钥到远端的复制:
    ssh-copy-id
    cnnblike
        5
    cnnblike  
       2016-12-10 14:11:28 +08:00   12
    哇塞,这种等级的内容都能用来做宣传?我的天
    cxl008
        6
    cxl008  
       2016-12-10 14:20:15 +08:00
    好厉害!
    Tink
        7
    Tink  
    PRO
       2016-12-10 14:23:03 +08:00 via iPhone
    这为啥要用 scp 啊?不能增量不能比对,好好的 rsync 不用?
    zander
        8
    zander  
       2016-12-10 14:28:06 +08:00   1
    rsync 和 syncthing 都是更好的选择。
    ETiV
        9
    ETiV  
       2016-12-10 14:28:53 +08:00 via iPhone
    中文互联网上搜 vim ,几乎全都是基础按键,没什么有深度的内容。

    LZ 这种编辑人员,功不可没。
    Allianzcortex
        10
    Allianzcortex  
       2016-12-10 17:50:04 +08:00
    为什么要这样...很多时候开发服务器是不允许你改配置文件的, ssh-copy-id 在本地配好不就可以了
    doubleflower
        11
    doubleflower  
       2016-12-10 17:53:26 +08:00
    scp 拷文件的速度很感人,特别是大量小文件
    Lelouchcr
        12
    Lelouchcr  
       2016-12-10 17:58:08 +08:00
    Cipher 或者 Compression 也不说。。
    debiann
        13
    debiann  
       2016-12-10 18:10:53 +08:00   1
    ls 都太认真了, lz 只是打个广告而已,内容不重要。
    RqPS6rhmP3Nyn3Tm
        14
    RqPS6rhmP3Nyn3Tm  
       2016-12-10 18:27:43 +08:00
    贵司营销人员要提高技术修养啊
    hadoop
        15
    hadoop  
       2016-12-10 18:30:04 +08:00
    居然不知道 ssh-copy-id 也敢来宣传,差评
    wtbhk
        16
    wtbhk  
       2016-12-10 20:49:03 +08:00
    B
    depress
        17
    depress  
       2016-12-10 22:51:05 +08:00
    本来以为楼主是要说用 expect ,还想着算了,毕竟给新手看的,不说啥了,结果一进来,万万没想到啊,我都不知道怎么喷了,服。
    hanbaobao2005
        18
    hanbaobao2005  
       2016-12-10 22:54:55 +08:00
    看到 Linux ,看到定时就会想到 Ansible.
    kiwi95
        19
    kiwi95  
       2016-12-10 22:55:52 +08:00
    搞推广也要提高自己的姿势水平啊,知道唔知道,不要老是啊,搞的都是这么 too simple 的东西,一点都不 exciting

    Angry
    hellojammy
        20
    hellojammy  
    OP
       2016-12-10 23:54:19 +08:00
    在各位大神面前献丑了,谢谢大家提醒,第③步是可以改用 ssh-copy-id 来做,但是假如服务器不是密码登录的,而是 SSH 秘钥文件登录的,则无法拷贝。

    ===========原文的第③步改为一下内容==============
    ③打开`id_rsa.pub`文件,并把它的内容拷贝到服务端(服务器 A )的 authorized_keys 文件中;或者直接使用`ssh-copy-id`命令把 id_rsa.pub 拷贝到服务器 A 中。如下命令,按提示输入登录密码即可拷贝。

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip_address
    xiuc001
        21
    xiuc001  
       2016-12-11 01:33:52 +08:00
    authorized_keys 和 .ssh 的权限设置都不说,差评!
    Yeoman
        22
    Yeoman  
       2016-12-11 03:41:20 +08:00 via Android
    本来以为会多么高端。。。这个稍微用 ssh 多一点就会知道的吧(密码敲烦了直接搜一下就能搜到)
    binux
        23
    binux  
       2016-12-11 03:53:31 +08:00   1
    @hellojammy 假如服务器不是密码登录的,那就已经是可以「无密码」拷贝文件了啊,为什么还要拷贝 id_rsa.pub ?
    你要么
    1. 不会给 ssh-copy-id 设置密钥登录
    2. 不会给不同主机设置不同密钥登录
    3. 不会给 scp 指定密钥
    要么三者都是

    那么,你这么做广告,是在招人到交流群教学的吗?教师有工资吗?
    paulagent
        24
    paulagent  
       2016-12-11 07:13:16 +08:00
    @debiann 你说到点子上了
    miao1007
        25
    miao1007  
       2016-12-11 09:09:38 +08:00 via Android
    为啥不同 expext
    9hills
        26
    9hills  
       2016-12-11 10:30:25 +08:00 via iPhone
    V2 的姿势水平真是越来越低了……
    jyf007
        27
    jyf007  
       2016-12-11 11:15:24 +08:00 via Android
    还不如管道直接传啊
    http://www.orczhou.com/index.php/2013/11/tranfer-data-faster-on-the-fly/
    而且 scp 原理类似
    jyf007
        28
    jyf007  
       2016-12-11 11:16:05 +08:00 via Android
    jyf007
        29
    jyf007  
       2016-12-11 11:17:18 +08:00 via Android
    @ETiV +1 LZ 拉低了互联网从业人员的素质。
    changwei
        30
    changwei  
       2016-12-11 13:02:38 +08:00
    我看到标题无密码以为是用其他什么高科技身份验证方式,没想到就是 ssh 。。。
    julyclyde
        31
    julyclyde  
       2016-12-11 14:12:46 +08:00
    大家注意看第一行就好了
    全篇精华就在第一行
    Showfom
        32
    Showfom  
    PRO
       2016-12-11 15:28:36 +08:00 via iPhone
    问一下 scp 这传输速度怎么容忍.....所以能用 rsync 就别用 scp isftp 这种速度那么慢的东西了
    Showfom
        33
    Showfom  
    PRO
       2016-12-11 15:29:22 +08:00 via iPhone
    @Showfom 手机瞎 jiba 联想 是 scp sftp
    mazyi
        34
    mazyi  
    PRO
       2016-12-11 20:14:18 +08:00
    全栈交流, 666
    goodryb
        35
    goodryb  
       2016-12-11 21:28:39 +08:00
    我下意思的看了下是不是网址打错了,进到了某某论坛
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2491 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 15:09 PVG 23:09 LAX 07:09 JFK 10:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86