你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

两台Linux服务器配置免密登录,并且使用scp后台传输大文件。

2021/12/21 23:42:39

第一步,设置两台Linux服务器之间的ssh免密登录。

1,为了方便理解,设置A服务器 hostnamectl set-hostname node-1

                               设置B服务器 hostnamectl set-hostname node-2

2,在node-1服务器上执行useradd -g root test1

                                           passwd test1 : 设置test1用户的密码

3,在node-1服务器上执行useradd -g root test2

                                           passwd test2 : 设置test2用户的密码

4,在node-1服务器登录test1用户,su - test1。

      pwd :切换为test1用户后,立即执行这个命令可以查出test1的home目录。

      执行ssh-keygen -t rsa。这个命令会在test1的home目录下生成.ssh文件夹。

     

    进入.ssh文件夹后,里边会生成两个文件(rsa是一种加密方式)id_rsa (私钥)id_rsa.pub(公钥)。其它几个文件是后边操作生成的,不用管。

   

将公钥复制到authorized_keys。

cat /home/test1/.ssh/id_rsa.pub >> /home/test1/.ssh/authorized_keys。

执行后就会生成 authorized_keys这个文件了。

在node-2服务器重复这个操作,执行完ssh-keygen -t rsa生成公钥和私钥就可以了。

之后在node-1服务器test1用户执行ssh test2@node-2服务器的ip cat /home/test2/.ssh/id_rsa_pub >> /home/test1/.ssh/authorized_keys。

这是将test2生成的公钥复制到node-1服务器中test1用户的authorized_keys文件里。

同时也会生成known_hosts文件。

然后在node-1服务器登录test1,没错,登录test1。这是为了在known_hosts里也储存一份test1的登录信息,之后好把authorized_keys和known_hosts这两个文件复制到node-2的test2的home目录下的.ssh目录下。

登录命令 :ssh test1@node-1服务器的ip

输入test1的密码

然后将authorized_keys和known_hosts传输到node-2服务器test2的.ssh目录。

scp /home/test1/.ssh/authorized_keys known_hosts test2@node-2服务器的ip地址:/home/test2/.ssh

这样,两台服务器之间的免密连接就完成了。尝试一下。

ssh test3@test3所在服务器的ip。这里的test3相当于上边的test2,我改了个名字而已。

第二,后台执行scp 传输大文件。

因为我们已经配置好了两台服务器之间的免密登录,所以就很简单了。

nohup scp 要传输的大文件 test2@目标服务器的ip:/放在哪个目录下 &。

比如

nohup scp CentOS-7-x86_64-DVD-2009.iso test2@192.165.1.52:/test &

这就是将CentOS-7-x86_64-DVD-2009.iso文件传输到192.165.1.52服务器的/test目录。

这一步骤可能会遇到权限的问题,需要保证test2用户拥有test目录的权限。test1用户拥有CentOS-7-x86_64-DVD-2009.iso文件的权限。不然会报权限不足的问题。

最后,如果用的MobaXterm_CHS,xshll这些工具的话,不要直接把终端给×了。用exit命令退出,不然的话你一x了终端,scp也会停止。不会以守护进程的形式执行。

killall -9 scp : 杀死所有的scp进程,如果你没用exit退出的话,下次执行nohup scp .... &。是执行不了的,你需要把之前的scp进程杀死。然后重新执行nohup scp ... &。

到此,就结束了。有什么问题可以评论,我看到并且遇到过的话都会答复的。