admin 管理员组

文章数量: 887021

[OS

简介

之前用用户名和密码登陆服务器 这样不安全 ,用SSH公钥(public key)验证 这个办法能很好的解决 登陆服务器 和安全登陆服务器的特点:

方法 / 步骤

🔐 一: 证书生成

命令行页面生成 (推荐)

查看执行结果,这时候连续回车即可,注意id_rsa和id_rsa.pub文件一定要在当前用户的.ssh目录下面,ssh公钥登录的时候默认读取该目录下面的私钥文件。

# 进入当前用户ssh文件夹
cd ~/.ssh
# 如果没有这个文件夹 则使用下面命令进行生成.ssh文件夹
#ssh localhost# 使用目标账号登录目标服务器,使用ssh key生成器生成账号 这时候连续回车即可
ssh-keygen -t rsa
# 或者使用
# ssh-keygen -t rsa -b 4096# enter 键盘保存key
# Enter file in which to save the key # 回车输入密码(使用私钥登录的密码:可以为空)
# Enter passphrase (empty for no passphrase):
# 一路enter 之后生成 id_rsa(私钥文件) id_rsa.pub(公钥文件)

🔐 🔨 二: SSH登录配置

2.1 上传公钥到KVM

把公钥文件 ssh_login.pub上传到 /root/.ssh/ 目录下

#进入.ssh
cd ~/.ssh
#这里我们使用的是root账户,我们先将id_rsa.pub文件放到root根目录下,然后将id_rsa.pub文件的内容追加到.ssh/authorized_keys文件中。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2.2 更改权限

注意: 1) .ssh目录的权限必须是700 2) .ssh/authorized_keys文件权限必须是600。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2.3 配置登录项

cd /etc/ssh
# ssh 配置文件
vi /etc/ssh/sshd_config
  • 📜配置项
	
# yes 允许Root远程登录 
# without-password:允许除密码以外(推荐配置 关闭root账号密码登录)
# forced-commands-only:仅允许使用密钥
PermitRootLogin without-password#使用公钥验证
PubkeyAuthentication yes# 是否开启密码登录 yes:开启密码登录 no:禁用密码登录
PasswordAuthentication no	#开启RSA验证(centOS 7.4之后该配置项被遗弃)
#RSAAuthentication yes	#公钥保存位置 (把公钥ssh_login.pub内容复制到authorized_keys里面)
AuthorizedKeysFile .ssh/authorized_keys#必要时,可以通过下面的配置属性修改登录端口
# Port 22
# 找到StrictModes字段,将yes修改为no
#StrictModes yes

2.3 重启ssh服务即可使用ssh密钥登录

systemctl restart sshd
systemctl restart sshd.service

不使用证书会有如下提示

restorecon -R -v /home #root用户为/root

🎫 三: 使用证书登录

另外开启一个窗口(尽量不要关闭当前配置窗口) 测试登录

目前MobaXterm v20.0 Build 4286会有闪退问题 暂时不确定是否是个例

📌附录: 密钥绑定账号

给组员分配登录账号时候,只允许密钥登录的时候可以做以下操作

  • 使用目标账号登录目标服务器,使用ssh key生成器生成账号
ssh-keygen -t rsa -b 4096
# enter 键盘保存key
# Enter file in which to save the key # 回车输入密码(使用私钥登录的密码:可以为空)
# Enter passphrase (empty for no passphrase):
# 一路enter 之后生成 id_rsa(私钥文件) id_rsa.pub(公钥文件)# 把公钥文件id_rsa.pub 改名为authorized_keys
mv id_rsa.pub authorized_keys

把id_rsa(私钥文件) 拷贝出来,就是可以登录该账号了

📌附录:SSH黑白名单设置

  • 黑名单登录表 (优先级高于白名单)
    文件路径 /etc/sshd.deny.hosteye 直接填写ip然后换行即可

  • 白名单登陆表
    文件路径 /etc/hosts.allow 直接填写ip然后换行即可

❗❗ 修改完之后运行下面命令行生效

#service xinetd restart

参考资料 & 致谢

本文标签: OS