本文介绍如何为远程服务器配置免密和别名登录;以及面对管理的大量服务机群,如何快速有效配置跳板机。
作者:operhero
我们知道远程连接的命令为
ssh -p 端口 用户@ip地址
当端口为默认的22,当前用户名与远程服务器用户名相同时,命令可简写成
ssh ip地址
输入命令后按提示数据密码完成登录。
问:每次登录都要输入密码,能设置免密登录吗?
答:当然可以。
第一步:利用rsa算法生成配对的公钥和私钥
ssh-keygen -t rsa
生成的过程和结果如下
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:V9PlWtxaCh8bKfT2hv3SdPbWzlorEqmcmOwxrGNLnQ8 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| . .|
| . o =.|
| = B *|
| . * & |
| S . . B B|
| o .. o ==|
| ..E+ o . . B|
| .o.+=+ . . *.|
| .o+. . . ooo|
+----[SHA256]-----+
这个过程中有三次用户输入,就是上边三个Enter ***: 。第一个输入是确定公钥和私钥保存的路径,第二个输入是使用公钥时需要额外输入的密码,第三个是确认密码。这三个输入我们直接回车,采用默认路径和不设置使用密码。
第二步:利用ssh-copy-id把刚刚生成的公钥上传到远程服务器。
ssh-copy-id -i ~/.ssh/id_rsa.pub xx.xx.xx.xx
第三步:输入命令后会提示你输入登录密码。输入完成,以后就能免密登录了。
问:如果我们要维护100台电脑,要给跳板机配置100次免密登录怎么办?
答:我们可以批量配置免密登录。这里要用到sshpass命令,即非交互登录,作用就是ssh远程登录的时候可以在命令中传递登录密码,而不用通过交互的方式手动输入密码。
第一步:安装epel,安装sshpass
我这里是centos 7,安装指令:
yum install -y epel-release
yum install -y sshpass
安装完成后,一条命令远程登录:
sshpass -p 密码 ssh xx.xx.xx.xx
这种直接用明文带上密码的方式实在看着不安全,不过我们用这个方式写脚本批量配置免密登录
第二步:把需要配置免密登录的服务器IP地址记录到某个文件中去,这里我们保存到remote-hosts中
[root@localhost ~]# cat remote-hosts
192.168.3.141
这里我们配置一台举例,实际中可能有几十上百台服务器ip
编写脚本
for host in $(cat remote-hosts)
do
sshpass -p root ssh-copy-id -o StrictHostKeyChecking=no root@${host}
done
需要修改的是用你的用户名替代例子中的root用户:你的登录用户@${host} 如果跳板机和远程机用户名一致,可省略用户名:{host}。这里唯一要解释的是参数StrictHostKeyChecking=no,作用是禁止The authenticity of提示。
现在,你可以批量配置跳板机免密登录服务器了。
问:每次输入ssh ip地址 非常不直观,也很难记忆怎么办?
答:使用别名登录。例如你用一百台服务器,你可以为你的服务器编号s001~s100,然后使用ssh s001登录第一台服务器。
这里有两种方法。
方法一:新建或修改etc/ssh/ssh.config或~/.ssh/config。加入
Host s001
HostName xx.xx.xx.xx
Port 22
User root
IdentityFile ~/.ssh/id_rsa.pub
IdentitiesOnly yes
方法二:修改etc/hosts文件,加入
xx.xx.xx.xx s001
建议使用方法二,修改静态域名的方式。因为s001不光用于说是登录,还可以用于像ansible等其他常用运维命令。

本文详细介绍如何为远程服务器配置免密码登录,包括利用rsa算法生成公钥和私钥,以及如何批量配置跳板机进行免密登录。此外,还介绍了如何使用别名简化登录命令,提高工作效率。
2615

被折叠的 条评论
为什么被折叠?



