Python 实现Linux间远程拷贝Scp不用输入密码问题

来源:互联网 发布:手机淘宝助理在哪里找 编辑:程序博客网 时间:2024/06/06 18:08

解决输入密码的问题

我们将执行终端命令的机器称为A_Client,远端机器称为B_Server。
A_Client 的用户名为 Root_A
B_Server 的用户名为 Root_B
以下是在机器A_Client和机器B_Server之间建立安全信任关系的步骤:

- 问题1 先实现远程拷贝的问题
2. scp 从本地上传到远程/home/Root_B目录下

    整个文件夹上传过去(A上传到B)(如果是文件,就不需要用参数-r,是文件夹就用-r)    scp -r /home/Root_A/test Root_B@192.168.0.0:/home/Root_B

然后会提示你输入另外那台192.168.0.0主机Root_B的用户的登录密码,接着就开始copy了。本地的/home/Root_A/test的test文件夹传到远程的/home/Root_B下。

ps:注意远程的用户名,不然链接失败。
  • 从远程到本地
    如果想反过来操作,把文件从远程主机copy到当前系统,也很简单。
    scp Root_B@192.168.0.0:/home/Root_B/a.txt  /home/Root_A

然后会提示你输入另外那台192.168.0.0主机Root_B的用户的登录密码,接着就开始copy了。这样远程的/home/Root_B/a.txt,就复制到了/home/Root_A

2.如果想在电脑间实现远程拷贝不需要密码

-确定自己安装了ssh

 $ cd .ssh

查看自己是否有对应的密钥和公钥
或者

$  ssh-keygen -b 1024 -t rsa 

然后一直回车,如果有安装就会重新覆盖,没关系。
然后将公钥证书id_rsa.pub复制到机器Server的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys。

$ scp -p /home/Root_A/.ssh/id_rsa.pub Root_B@192.168.0.0:/home/Root_B/.ssh/authorized_keys$ Root_B@192.168.0.0's password:          <-- 输入机器B_Server的Root_B用户密码$ id_rsa.pub       100% |***************|   218       00:00

在执行上述命令时,两台机器的用户之间还未建立安全信任关系,所以还需要输入机器B_Server的Root_B用户密码。
经过以上2步,就在机器A_Client的Root_A和机器B_Server的Root_B之间建立安全信任关系。下面我们看看效果:

   $ scp -r /home/Root_A/test Root_B@192.168.0.0:/home/Root_B$ text     100% |***************|    19       00:00

现在就可以了,不用输入密码复制。

3. 如果多台电脑间无密码复制呢??
没关系,同样的道理,都是复制对方的公钥到主机,但是如果只是一样的步骤是不行的,因为名字会被覆盖的。

所以只能把各个机器的id_rsa.pub复制过来先命名为其他名字,然后把他们全部追加到authorized_keys,就可以啦。

$ scp -p /home/Root_A/.ssh/id_rsa.pub Root_B@192.168.0.0:/home/Root_B/.ssh/CCCC_keys

把CCCC_keys 追加到authorized_keys

$  cat /home/Root_A/.ssh/CCCC_keys >> /home/Root_A/.ssh/authorized_keys

目的基本可以实现啦。

问题

SSH生成id_rsa, id_rsa.pub后,连接服务器却报:
Agent admitted failure to sign using the key
错误。
解决方法:在当前用户下执行命令:

ssh-add

即可解决。

注意不要把用户名和对应的ip写错。
参考:
http://eric-gcm.iteye.com/blog/912071
http://www.cnblogs.com/zhuawang/p/5046387.html

0 0