尝试过使用scp 进行文件传输,这个命令比较好,不需要本机器或者对端机器安装什么服务.但一直以来有个缺点,需要手动输入密码,我在服务器A上定了个计划,每周执行一次 拷贝命令,将A上指定目录下的一些文件拷贝到对方机器上.命令是这样写的:scp –rp /backup/ bklinux@*.*.*.*:/backup/, 命令的作用是将本地/backup目录下的文件及子目录上传至B服务器/backup目录下.
A:建立用户bklinux,并对/backup目 录有访问权限
B:建立用户bklinux,并对/backup目录有访问权限
这条命令不需要管理员权限就可以执行. 但传输文件时,提示输入bklinux的密码.
现在的问题,我如果想加入脚本每周固定的时间执行,应该怎么取消掉密码?google scp 密码,找到方法.
----------------------------------------------------- 我是分割线 -------------------------------------------------------------------------
把你的本地主机用户的ssh公匙文件复制到远程主机用户 的~/.ssh/authorized_keys文件中
假设本地主机linux100,远程主机linux200
一,在linux100主机里的用户
运行
#ssh-keygen -t rsa
结果如下
QUOTE:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/.username/ssh/id_rsa):#回车
Enter passphrase (empty for no passphrase):#回车
Enter same passphrase again:#回车
Your identification has been saved in /home/.username /.ssh/id_rsa.
Your public key has been saved in /home/.username /.ssh/id_rsa.pub.
The key fingerprint is:
38:25:c1:4d:5d:d3:8946:67:bf:52:af:c3:17:0c username@localhost
Generating RSA keys:
Key generation complete.
会在用户目录~/.ssh/产生两个文件,id_rsa,id_rsa.pub
二,把linux100主机上的id_rsa.pub文件拷贝到linux200主机的root用户主目录下的.ssh目录下,并且改名为 authorized_keys
即:
/root/.ssh/authorized_keys
这样在linux100主机上使用scp命令复制文件到linux200上将不提示输入密码了,直接复制了。
反之亦然!
-------------------------------------------------------------我是 分割线---------------------------------------------------------------------
实际上就是建立了双方的ssh的信任机制
经实验,原本A服务器/root下没有.ssh/目录.执行#ssh-keygen -t rsa后,产生文件如下:
将id.rsa.pub通过scp命令拷贝至B服务器root/.ssh/authorized_keys目录下,B服务器需要手动建立.ssh目录.
B服务器重新加载sshd服务,service sshd reload(也许是多余的)
这样,可以在A上执行scp –rp /backup/ bklinux@*.*.*.*:/backup/, 或者scp –rp /backup/ root@*.*.*.*:/backup/进 行文件传输,
同样,也可以使用bklinux登陆A,执行$ssh-keygen -t rsa,也将在对应目录产生3个文件,重复执行上述步骤,拷贝至B服务器/home/bklinux/.ssh/authorized_keys下,B服务器bklinux用户的.ssh/目录也需要手动创建.
这样,在A上用bklinux用户,也可以进行免密码的文件传输了.
注:此方式的安全性本文没有谈到,更好的办法是在B上创建nfs服务,在A上就可以直接操作了,就像操作本地磁盘一样.以后尝试.
使用此方法做免密码传输,需要双方服务器建立同样的账号,在客户端执行ssh-keygen -t rsa,然后将对应的文件拷贝至服务器端,相当于客户端去服务器端进行信任的校验,通过就不需要密码了.