文章目录
- 场景
- 实现
场景
工作中遇到需要使用多个云平台多个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 ipHostName remote_server_ip# 登陆用户名User username# 私钥路径IdentityFile /path/to/your/private/keyfile
这里需要配置两个服务器连接信息:
Host server1HostName ip1User user1IdentityFile ~/.ssh/server1_rsaHost server2HostName ip2User user2IdentityFile ~/.ssh/server2_rsa
至此就可以使用ssh server1
ssh server2
免密码登录相应的服务器.
除此之外scp拷贝指令也可以免去输入密码或者指定private key实现便捷拷贝文件到远程服务器.
scp -r /localpath/* remote_server:/remotepath/