• ssh 免密码登录远程服务器最佳实践


    文章目录

    场景

    工作中遇到需要使用多个云平台多个k8s集群的情况. 某些云平台不能使用desktop访问, 所以只能远程登录到指定访问权限的虚拟机. 在这个前提下一般是指知道这些虚拟的ip, user 以及 password. 使用ssh登录每一次都需要输入密码, 使用scp拷贝的时候也涉及到输入密码. 一旦涉及到较多的虚拟机需要登录,那么这回让工作效率变低. 这里总结一下免密码登录多个远程服务器的最佳实践.

    实现

    假设有两个远程服务器需要我们登录,分别是server1(ip1, user1, pass1) 以及server2(ip2, user2, pass2).

    首先为每一个服务器创建ssh私钥和公钥

    ssh-keygen -t rsa -b 4096
    
    • 1

    默认情况会在~/.ssh/目录下面生成私钥文件id_rsa.pub 和 公钥文件 id_rsa. 这里因为有多个服务器所以这里创建的时候使用特定的密钥文件名替换默认的密钥文件名字. 比如以~/.ssh/server1_rsa~/.ssh/server2_rsa 作为服务器的私钥名.

    生成之后需要把对应公钥使用指令ssh-copy-id上传到远程的服务器的~/.ssh/authorized_keys 文件中.

    ssh-copy-id -i {public key file } {username}@{remote_server_ip}
    
    • 1

    比如这里将生成的server1_rsa.pub 拷贝到server1, server2_rsa.pub 拷贝到server2

    ssh-copy-id -i ~/.ssh/server1_rsa.pub user1@pass1
    
    • 1
    ssh-copy-id -i ~/.ssh/server2_rsa.pub user2@pass2
    
    • 1

    这里注意到需要输入服务器密码.

    之后再配置~/.ssh/config文件

    # server 别名
    Host myserver
      # server ip
      HostName remote_server_ip
      # 登陆用户名
      User username
      # 私钥路径
      IdentityFile /path/to/your/private/keyfile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里需要配置两个服务器连接信息:

    Host server1
      HostName ip1
      User user1
      IdentityFile ~/.ssh/server1_rsa
    
    Host server2
      HostName ip2
      User user2
      IdentityFile ~/.ssh/server2_rsa
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    至此就可以使用ssh server1 ssh server2 免密码登录相应的服务器.

    除此之外scp拷贝指令也可以免去输入密码或者指定private key实现便捷拷贝文件到远程服务器.

    scp -r /localpath/* remote_server:/remotepath/
    
    • 1
  • 相关阅读:
    使用git命令修改分支名称
    【BUG 弹药库】二分模板的优化
    Java8新特性之stream、map和reduce
    Java集合3-LinkedList
    springboot配置
    一体化运维监控:提供全方位数据洞察
    降水检验项目展示(工作机会/私活请私信我)
    说说switch关键字
    UFS详细介绍---终章
    C++中string的用法总结+底层剖析
  • 原文地址:https://blog.csdn.net/Allocator/article/details/132921596