ssh 登录提供两种认证方式: 密码认证方式和密钥(Public key)认证。
服务器使用密码验证时需要设置一个复杂度高的密码来防止不法分子进行密码爆破
而使用ssh密钥登录则相较于传统的用户名和密码认证方式,密钥登录认证更为安全可靠,可以杜绝暴力破解威胁。
ssh 密钥对是通过一种加密算法生产的一对密钥:
一个对外界公开,称为“公钥”,公钥存放于服务器即可
另一个我们自己保留,称为“私钥”。私钥保存于需要登录的本地电脑
公有和私有密钥被称为密钥对。
这里介绍密钥认证方式登录到linux的方法。
使用密钥登录分为3步:
1、生成密钥(公钥与私钥);
2、放置公钥(Public Key)到服务器~/.ssh/authorized_key文件中;
3、配置ssh客户端使用密钥登录。
一、生成密钥
1、进入用户目录下的.ssh目录下,使用
cd /root/.ssh
如果出现No such file or directory 提示,没有找到相应文件,原因是因为没有用root用户ssh登录过,执行一下ssh操作就会自动生成了
2、使用命令,然后根据提示依次输入yes,以及服务器启动密码
ssh localhost
3、重新进入 /root/.ssh 目录执行ssh-keygen命令创建密钥对
cd /root/.ssh ssh-keygen -t rsa -b 4096
执行密钥生成命令,基本上是一路回车既可以了
但是需要注意的是:执行命令的过程中是会提示呢输入密钥的密码的,不需要密码直接回车就行。
二、将公钥信息写入到私钥登录时的校验文件
执行命令:
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.1
注意将IP地址是你自己服务器的地址, 执行命令了会要求输入服务器的密码,根据提示输入密码即可
执行完成后查看目录发现一个文件:authorized_keys,说明公钥添加成功
三、将私钥下载到本地电脑
1、刚才服务器生成的id_rsa私钥文件,我们要下载到本地主机上,我们使用的是sz命令 (如果没有rz命令,运行yum install lrzsz安装)
进入到 /root/.ssh/ 目录,运行
rz id_rsa
将 id_rsa 私钥下载到本地, 会弹出本地文件,选择要保存的文件地址确认即可(注意文件夹名称不能有中文字符)
2、执行成功后,打开本地文件夹,会看到密钥文件
3、xhsell 使用 public key 方式连接
正常可以连接成功
可能出现的问题:
xshell 连接不上提示
所选的用户密钥未在远程主机上注册,请再试一次
可能的原因:
1、ssh 未开启密钥登录
首先,修改 /etc/ssh/sshd_config,将 PubkeyAuthentication yes 前的注释去掉
接着,使用 systemctl restart sshd 重启sshd服务
2、重新检查一下生成流程,看一下公钥跟私钥是否正确