Linux系统通过rsa免密码登录、文件传输

一、背景

  • 我们在开发、测试或者运维过程中,总是需要登录Linux服务器进行环境搭建,软件安装和日志查询等操作,如果有多台服务器,则需要进行多次切换,切换过程会需要输入密码难免会觉得麻烦,且效率低下。这种情况下,可以利用软件保存密码,然后软件多开解决此问题,但是难免有可能会出现搞错服务器的情况。
  • 再者在处理定时或者自动化任务,比如定时进行文件传输的话和自动部署,就会比较不方便了,通过以下方式可以解决该问题。

二、步骤

  • 假设两台服务器
    • 服务器A(172.16.206.101)
    • 服务器B(172.16.206.102)
  • 例子实现的是服务器A 登录到服务器B,把服务器A 的数据传输到服务器 B

  1. 首先我们在服务器A(172.16.206.101),使用下面的命令生成私钥:id_rsa公钥:id_rsa.pub,公钥是可以发送到别的服务器的,私钥是保存在当前服务器中的(切忌传输到别的服务器上)。
ssh-keygen -t rsa
  • 执行上面的命令,然后一路回车即可,生成文件的目录为:/root/.ssh,.ssh为隐藏文件目录,想查看的话通过命令ll -a进行查看。
    1.png
  1. 服务器A,通过命令把公钥(id_rsa.pub)传到服务器B 的 /root/.ssh 目录下。
scp /root/.ssh/id_rsa.pub root@172.16.206.102:/root/.ssh
2.png
  • 注意:此时可能会保错:没有那个文件或目录,意思是在服务器B 上没有找到 /root/.ssh目录。
  • 处理:登录到服务器B上通过命令 ssh 172.16.206.102 生成该目录。目录生成后,重新切回到服务器A上,重新执行scp命令。
    3.png
  1. 服务器B,中,进入到 /root/.ssh 目录,通过命令把服务器A生成的公钥(id_rsa.pub)追加到 authorized_keys

    4.png

  2. 完成后,服务器A就可以通过免密登录到服务器B了

登录:
ssh root@172.16.206.102
5.png
  • 传输文件
传输文件:
scp /home/1.jpg root@172.16.206.102:/home/picture

命令行的意思是:把home目录下 1.jpg的图片,传输到服务器B的 home目录下的 picture文件夹中

三、总结

  1. 服务器A,生成公钥(id_rsa.pub)和私钥(id_rsa);

    ssh-keygen -t rsa

  2. 服务器A,把公钥传输到服务器B的 /root/.ssh 目录;

    scp /root/.ssh/id_rsa.pub root@${服务器B的IP}:/root/.ssh
    如:scp /root/.ssh/id_rsa.pub root@172.16.206.102:/root/.ssh

    如果服务器B 没有 /root/.ssh ,登录到服务器B,通过命令:ssh 服务器B的IP 生成;
    如:ssh 172.16.206.102

  3. 服务器B,进入 /root/.ssh,把公钥追加到 authorized_keys文件中;

    cat id_rsa.pub >> authorized_keys
    如果没有authorized_keys文件也没有关系,执行命令后,会自动生成

四、注意事项

  1. 两台服务器之间登录的用户名需保持一致。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容