> Linux命令 >

Linux间Scp远程拷贝认证一次后,不需要再次输入密码

Linux间Scp远程拷贝认证一次后,不需要再次输入密码
文章目录
Linux间Scp远程拷贝认证一次后,不需要再次输入密码
背景
先实现远程拷贝的问题
如果想在电脑间实现远程拷贝不需要密码
如果多台电脑间无密码复制呢
可能产生问题
背景
我们将执行终端命令的机器称为A_Client,远端机器称为B_Server。
A_Client 的用户名为 Root_A
B_Server 的用户名为 Root_B
以下是在机器A_Client和机器B_Server之间建立安全信任关系的步骤:

先实现远程拷贝的问题
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:注意远程的用户名,不然链接失败。

scp从远程到本地
如果想把文件从远程主机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

如果想在电脑间实现远程拷贝不需要密码
确定自己安装了ssh
查看自己是否有对应的密钥和公钥
$ cd .ssh


或者

$  ssh-keygen -b 1024 -t rsa


然后一直回车,如果有安装就会重新覆盖,没关系。

创建authorized_keys
将公钥证书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用户密码。


3. 完成
经过以上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


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

如果多台电脑间无密码复制呢
没关系,同样的道理,都是复制对方的公钥到主机,但是如果只是一样的步骤是不行的,因为名字会被覆盖的。
所以只能把各个机器的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写错。


(责任编辑:IT)