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

文章目录

  • 场景
  • 实现

场景

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

实现

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

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

ssh-keygen -t rsa -b 4096

默认情况会在~/.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}

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

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

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

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

# server 别名
Host myserver
  # server ip
  HostName remote_server_ip
  # 登陆用户名
  User username
  # 私钥路径
  IdentityFile /path/to/your/private/keyfile

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

Host server1
  HostName ip1
  User user1
  IdentityFile ~/.ssh/server1_rsa

Host server2
  HostName ip2
  User user2
  IdentityFile ~/.ssh/server2_rsa

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

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

scp -r /localpath/* remote_server:/remotepath/

你可能感兴趣的:(k8s,ssh,服务器)