ssh服务登录的常用验证方式
用户/口令
基于密钥
利用ssh-copy-id复制公钥到多台服务器,可以实现免密登录
1、首先在客户端生成一对密钥(ssh-keygen)
2、将客户端的公钥ssh-copy-id拷贝到服务器
3、服务器根据客户端发来的公钥进行密码加密,加密后再次回传给客户端,客户端用自己的私钥解密,如果密码正确,则用户登录成功
在客户端生成密钥对
ssh-keygen -t rsa
把公钥文件传输至远程服务器对应用户的家目录
ssh-copy-id user@host
[root@cent7 ~]# ssh-keygen #生成密钥
[root@cent7 ~]# ssh-copy-id 10.0.0.133 #复制公钥到远程主机
[root@cent8 ~]# ssh-keygen -p #重设私钥口令
#验证代理,保密解密后的密钥,口令就只需要输入一次,在gnome中,代理被自动提供给root用户
[root@cent8 ~]# ssh-agent bash #启用ssh代理
[root@cent8 ~]# ps aux|grep agent
root 48193 0.0 0.0 29288 508 ? Ss 08:31 0:00 ssh-agent bash
root 48212 0.0 0.0 12112 1072 pts/0 S+ 08:31 0:00 grep --color=auto agent
[root@cent8 ~]# ssh-add #钥匙通过命令添加给代理
去掉新连接时,yes/no的选项
-o StrictHostKeyChecking=no 连接新主机时,不进行公钥确认
ssh-copy-id -o StrictHostKeyChecking=no root@10.0.0.121
或者在当前用户目录的 .ssh/config文件,添加如下配置,如果.ssh目录没有config文件,可自行创建
StrictHostKeyChecking=no
安装自动登录ssh工具sshpass
#ubuntu:
root@ubuntu:~# apt -y install sshpass
#centos:
[root@cent8 ~]# yum -y install sshpass
通过安装好的sshpass命令,运行下面命令就能无需手工介入将ssh公钥复制到远程主机
[root@cent8 ~]# sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no root@10.0.0.121
[root@cent8 ~]# sshpass -p 123456 ssh-copy-id root@10.0.0.121
通过脚本实现ssh基于密钥的登录
root@ubuntu:/data# cat key.sh
#!/bin/bash
HOSTS="
10.0.0.121
10.0.0.133
"
PASS=redhat
[ -f /root/.ssh/id_rsa ] || ssh -keygen -P "" /root/.ssh/id_rsa &> /dev/null
apt -y install sshpass &> /dev/null
for i in $HOSTS;do
{
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub $i &> /dev/null
}&
done
wait
root@ubuntu:/data# sh key.sh
root@ubuntu:/data# ssh 10.0.0.133
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Tue Apr 27 04:39:14 2021 from 10.0.0.121
[root@cent8 ~]#