Linux系统通过rsa免密码登录、文件传输教程
一、背景
- 我们在开发、测试或者运维过程中,总是需要登录Linux服务器进行环境搭建,软件安装和日志查询等操作,如果有多台服务器,则需要进行多次切换,切换过程会需要输入密码难免会觉得麻烦,且效率低下。这种情况下,可以利用软件保存密码,然后软件多开解决此问题,但是难免有可能会出现搞错服务器的情况。
- 再者在处理定时或者自动化任务,比如定时进行文件传输的话和自动部署,就会比较不方便了,通过以下方式可以解决该问题。
二、步骤
假设两台服务器
- 服务器A(172.16.206.101)
- 服务器B(172.16.206.102)
- 例子实现的是服务器A 登录到服务器B,把服务器A 的数据传输到服务器 B
- -
- 首先我们在服务器A(172.16.206.101),使用下面的命令生成私钥:id\_rsa 和 公钥:id\_rsa.pub,公钥是可以发送到别的服务器的,私钥是保存在当前服务器中的(切忌传输到别的服务器上)。
ssh-keygen -t rsa
- 执行上面的命令,然后一路回车即可,生成文件的目录为:/root/.ssh,.ssh为隐藏文件目录,想查看的话通过命令
ll -a
进行查看。
- 服务器A,通过命令把公钥(id\_rsa.pub)传到服务器B 的 /root/.ssh 目录下。
scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh
- 注意:此时可能会保错:没有那个文件或目录,意思是在服务器B 上没有找到 /root/.ssh目录。
- 处理:登录到服务器B上通过命令
ssh 172.16.206.102
生成该目录。目录生成后,重新切回到服务器A上,重新执行scp命令。
- 服务器B,中,进入到 /root/.ssh 目录,通过命令把服务器A生成的公钥(id\_rsa.pub)追加到 authorized\_keys
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEqSq78V-1625643709822)(4.png)]](https://www.icode9.com/i/ll/?i=2021070715431644.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoaWNrZW5faA==,size_16,color_FFFFFF,t_70) - 完成后,服务器A就可以通过免密登录到服务器B了
登录:
ssh [email protected]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L4KChiFG-1625643709823)(5.png)]](https://www.icode9.com/i/ll/?i=20210707154323313.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoaWNrZW5faA==,size_16,color_FFFFFF,t_70)
- 传输文件
传输文件:
scp /home/1.jpg [email protected]:/home/picture
命令行的意思是:把home目录下 1.jpg的图片,传输到服务器B的 home目录下的 picture文件夹中
三、总结
- 服务器A,生成公钥(id\_rsa.pub)和私钥(id\_rsa);
ssh-keygen -t rsa
- 服务器A,把公钥传输到服务器B的 /root/.ssh 目录;
scp /root/.ssh/id\_rsa.pub root@${服务器B的IP}:/root/.ssh
如:scp /root/.ssh/id\_rsa.pub [email protected]:/root/.ssh如果服务器B 没有 /root/.ssh ,登录到服务器B,通过命令:
ssh 服务器B的IP
生成;
如:ssh 172.16.206.102
- 服务器B,进入 /root/.ssh,把公钥追加到 authorized\_keys文件中;
cat id\_rsa.pub >> authorized\_keys
如果没有authorized\_keys文件也没有关系,执行命令后,会自动生成
四、注意事项
- 两台服务器之间登录的用户名需保持一致。