打开配置文件

通常,linux发行版的sshd配置文件路径为/etc/ssh/sshd_config,使用你喜欢的编辑器打开,非root账户加上sudo,否则权限不够,无法保存!
例如:

sudo vim /etc/ssh/sshd_config

更改端口

更改端口并非必须,但是更改端口可以起到有限的防御作用,所以建议更改!
找到#Port 22所在行,取消注释,并将22改为你要更改更改的端口。
将端口更改为2222:

Port 2222

修改支持的登录验证方式

密码验证方式

密码验证方式默认开启,如需关闭找到#PasswordAuthentication yes所在行,取消注释,将yes改为no!

PasswordAuthentication no

然后找到ChallengeResponseAuthentication,也将其设置为no。

ChallengeResponseAuthentication no

公钥认证方式

公钥验证方式默认开启,证书生成及配置将在后面介绍,如需关闭公钥验证,找到#PubkeyAuthentication yes所在行,取消注释,将yes改为no!

PubkeyAuthentication no

双重认证

双重认证配置方式将在后面介绍,如需要设置双重认证,请找到ChallengeResponseAuthentication所在行,取消注释,并设置为yes。

ChallengeResponseAuthentication yes

设置登录用户白名单

为安全起见,强烈建议设置此项!
找到#PermitRootLogin prohibit-password所在行,在其下面加上一行:

AllowUsers yourusername

配置公钥

生成证书

在用户目录创建.ssh文件夹并进入:

mkdir ~/.ssh
cd ~/.ssh

生成默认加密方式的证书使用如下命令

ssh-keygen

提示证书存放的路径,直接回车,设置证书密码,确认后将生产id_rsa和id_rsa.pub两个文件,id_rsa.pub为服务端使用的公钥,id_rsa为客户端使用的私钥!
如需更改加密方式可参考SSH keys

将公钥命名为指定文件名,以启用:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

更改公钥权限,保证安全

chmod 400 ~/.ssh/authorized_keys
chattr +i ~/.ssh/authorized_keys
chattr +i ~/.ssh

配置双重认证

密码的安全性相对较低,公钥认证需要上传私钥文件到客户端,在不常用的设备上登录的话特别麻烦,所以建议使用google-authenticator和密码双重认证!
使用前需要在服务端安装 libpam-google-authenticator

安装libpam-google-authenticator

sudo apt-get isntall libpam-google-authenticator

自行搜索安装google Authenticator手机客户端

生成并绑定双重认证密钥

输入google-authenticator命令,按照提示绑定并设置密钥。

$ google-authenticator
Do you want authentication tokens to be time-based (y/n) y
#<这里是自动生成的二维码>
Your new secret key is: ZVZG5UZU4D7MY4DH          #(密钥)
Your verification code is 269371                  #(验证码)
Your emergency scratch codes are:                 #(备用令牌码)7005895497277505996848965651433282717798
Do you want me to update your "/home/username/.google_authenticator" file (y/n) y
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
#(是否拒绝多次使用使用相同的令牌?这将限制你每30s仅能登录一次,但会提醒/阻止中间人攻击。)
#
By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n
#(是否将窗口时间由1分30秒增加到约4分钟?这将缓解时间同步问题。)
#
If the computer that you are logging into is not hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
#(是否启用此模块的登录频率限制,登录者将会被限制为最多在30秒内登录3次。)
#

启用双重认证:

注意:启用前请确保双重认证设置无误,否则将导致ssh无法登陆,最好有备用登录方式,如启用vnc!启用双重认证请确保sshd_config的ChallengeResponseAuthentication设置为yes!本文介绍的方法并不会对公钥认证的方式启用双重认证,如需设置公钥+google-authenticator的认证方式,请参阅wiki
设置插入式验证模块
在/etc/pam.d/sshd文件的开始位置添加pam_google_authenticator.so:

# google-auth
auth required pam_google_authenticator.so
# google-authend

重启sshd服务生效

sudo systemctl restart sshd

本文参考资料:

  • SSh keys-archlinux
  • Google Authenticator

SSH服务配置公钥及双重验证相关推荐

  1. 大数据学习3.1 环境准备(SSH服务配置)

    SSH服务配置 一.SSH远程登录功能配置 1.查看系统是否开启了SSH服务 2.利用FinalShell工具创建SSH连接 利用FinalShell访问虚拟机 二.SSH免密登录功能配置 1.mas ...

  2. 【Ubuntu】开启ssh服务/配置ftp内网穿透/自动连接校园网

    前言 想让工作电脑开启ssh服务,这样就可以在校外进行远程访问办公,电脑的系统为Ubuntu20.04 开启ssh服务 首先查看当前Ubuntu安装的SSH服务: dpkg -l | grep ssh ...

  3. H3C路由器SSH服务配置命令

    转载于:https://www.cnblogs.com/fanweisheng/p/11175204.html

  4. 【笔记】SSH服务:基本概述、相关命令“ssh、scp、sftp”、验证方式、场景实践、安全优化

    SSH服务 SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务 2. ...

  5. Linux | ssh服务原理、配置及操作

    目录 ssh服务 ssh服务的配置文件 配置文件常用配置详解: 加密方法 登陆验证原理 实现公钥认证,免密码登录的步骤 公钥认证排错 ssh登录方法 客户端配置 ssh服务 ssh是什么? ssh - ...

  6. 第9章 使用ssh服务管理远程主机。

    章节简述: 学习使用nmtui命令配置网卡参数.手工将多块网卡做绑定.使用nmcli命令查看网卡信息和使用ss命令查看网络及端口状态. 完整演示sshd服务配置方法并详细讲述每个参数的作用,实战基于密 ...

  7. 运维基本功(十六):远程管理SSH服务

    本文是在课程课件基础上修改的学习笔记 课程原地址:https://www.bilibili.com/video/BV1nW411L7xm 如有侵删 运维基本功(一):Linux系统安装 运维基本功(二 ...

  8. 远程访问及控制SSH 服务

    目录 前言 一.SSH概述 二. SSHD服务 2.1 远程登录 2.2 文件传输 三.SSH服务配置 3.1 SSH服务安全调优 3.2 SSH服务验证 四.密钥对构建 4.1 密钥对原理 4.2 ...

  9. SSH加固配置谷歌双因子认证+更换手机方式

    SSH加固配置谷歌双因子认证+更换手机方式 注:为某一用户配置双因子认证,需切换到该用户下进行操作 1.更换yum源为阿里源 下载wget,用以更换yum源使用: sudo yum -y instal ...

  10. linux ssh服务状态,查看linux ssh服务信息及运行状态方法

    关于ssh服务端配置有不少文章,例如 linux下ssh服务配置,这里仅列举出一些查看ssh服务相关信息的常用命令. 1 安装 apt-get install openssh-server 2 完成后 ...

最新文章

  1. 报表在vista和win7下无法浏览应用的解决办法
  2. [Usaco2007 Dec]穿越泥地[bfs][水]
  3. TFS 无法签入或自动签出 解决方法 【强制撤销签出无效】
  4. Makefile实例分析
  5. Python中文分词--jieba的基本使用
  6. PHP的学习--解析URL
  7. 2.0 es6中forEach以及数组操作
  8. python的百分号和斜杠 除_关于python:如何替换除字母,数字,正斜杠和反斜杠之外的所有字符...
  9. alm数据库mysql_mysql
  10. Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
  11. 你的关注,就是我的动力!(第3次改版中)
  12. 《给你一个团队,你能怎么管?》读书笔记
  13. 设计模式微课版来啦——《设计模式(第2版)》
  14. python算方差_Python求均值,方差,标准差的实例
  15. Minecraft Mod 开发:0-前言
  16. C盘扩大 解决办法
  17. Serverless实战——2分钟,教你用Serverless每天给女朋友自动发土味情话
  18. 【PID优化】基于蝗虫算法PID控制器优化设计含Matlab源码
  19. matlab调用gams错误,求助:GAMS软件运行中错误报告
  20. 胡策day 10.26 T2 人、镜子与墙

热门文章

  1. 博客网页设计制作 简单静态HTML网页作品 DIV CSS个人网页作业成品 dreamweaver学生个人博客网站模板
  2. 手机号正则(2020年4月15日)
  3. 手把手教你搭建一台永久运行的个人服务器
  4. codeforces 707c
  5. 【应用多元统计分析】CH5 判别分析3——贝叶斯判别
  6. 9门主流编程语言---详细对比
  7. word文档如何画线条流程图_Word中流程图如何画 手把手教你制作!
  8. VSCODE:删除空白行
  9. 能自行调节温度的新型织物 马里兰大学新发明引发讨论
  10. mysql root不能登录密码怎么办_mysql 忘记root密码,重置密码,及重置密码后权限问题不能登录的解决方案...