[Linux] 如何禁止使用口令只允许使用密钥建立 SSH 连接
1. 创建 SSH KEY
使用 ssh-keygen 生成一个密钥对,并且将公钥注册到服务器的 $HOME/.ssh/authorized_keys 文件。
2. 确保启用 SSH 公钥认证功能
查看 /etc/ssh/sshd_config 文件,确保以下两条为 yes:
RSAAuthentication yes
PubkeyAuthentication yes
一般它们默认都是 yes,如果不是,请修改为 yes,保存并且重启 SSH 服务:
$ sudo service ssh reload
3. 禁止密码安全验证
编辑 /etc/ssh/sshd_config 文件,确保以下内容出现在文件中:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
保存并重启 SSH 服务:
$ sudo service ssh restart
如果你当前处于 SSH 连接登录状态,可能重启服务会失败,可以尝试重启系统。
4. 禁止特定条件使用密码登录
有时我们并不想禁止所有用户的口令登录,可以通过配置 sshd_config 文件来实现对特定对象的登录设置。
使用 $ man sshd_config 查看帮助信息。sshd_config 支持在文件中增加 Match 区块,如果 Match 关键字所在行的条件匹配成功,则 Match 后所有的关键字将被逐个加载,直到遇见另一个 Match 关键字或者文件结尾。所以一般 Match 区块添加在 sshd_config 文件末尾。
Match 关键字支持的条件包括 User, Group, Host 和 Address,条件样式是单个字符串,多个样式使用逗号分隔,也可以使用通配符(*)和求反符号(!)。
Address 条件样式可以是 CIDR(地址/掩码)格式,例如:192.0.2.0/24 或 3ffe:ffff::/32。
例如禁止用户 foo,用户组 bar 使用口令登录,在 /etc/ssh/sshd_config 文件末尾添加以下内容:
Match User foo, Group bar
PasswordAuthentication no
禁止除用户 foo 以外其他用户使用口令登录:
Match User *, !foo
PasswordAuthentication no
Match 区块支持的关键字包括:
AllowAgentForwarding, AllowTcpForwarding, AuthorizedKeysFile, AuthorizedPrincipalsFile, Banner, ChrootDirectory, ForceCommand, GatewayPorts, GSSAPIAuthentication, HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, KbdInteractiveAuthentication, KerberosAuthentication, MaxAuthTries, MaxSessions, PasswordAuthentication, PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTunnel, PubkeyAuthentication, RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset, X11Forwarding, X11UseLocalHost.
sshd_config 文件内容大小写敏感,编辑该文件一定要小心仔细,如有不慎可能导致 SSH 服务器无法启动。如果你的主机就在你身边,你也许还可以从欢迎界面登录来修复错误,如果你只能通过 SSH 远程登录主机,Wooo~ 那就只能祝你好运了。
[Linux] 如何禁止使用口令只允许使用密钥建立 SSH 连接的更多相关文章
- Linux第二篇【系统环境、常用命令、SSH连接、安装开发环境】
		
系统环境 我们知道Windows的出色就在于它的图形界面那一块,而Linux对图形界面的支持并不是那么友好-其实我们在Windows下对图形界面进行的操作都是得装换成命令的方式的! 当然了,我们在Ub ...
 - [转帖]Linux超级用户root口令忘记怎么办?
		
Linux超级用户root口令忘记怎么办? 2010-05-10 12:15:00 monkey_d_meng 阅读数 5535 收藏 更多 分类专栏: Linux 版权声明:本文为博主原创文章 ...
 - ssh连接linux服务器只显示-bash-4.1#不显示路径解决方法
		
ssh连接linux服务器只显示-bash-4.1#不显示路径时,我们只需要修改 ~/.bash_profile文件,如果不存在这个文件,那么新建一个,增加内容 export PS1='[\u@\ ...
 - Windows 和  Linux 下 禁止ping的方法
		
Windows 和Linux 下 禁止ping的方法 目的: 禁止网络上的其他主机或服务器ping自己的服务器 运行环境: Windows 03.08 linux 方法: Windows 03下: ...
 - Linux设置禁止用户登陆
		
Linux设置禁止用户登陆 vim /etc/shadow 第二栏(密码栏)设为*,会丢失密码 usermod -L username # -L Lock; -U Unlock chsh userna ...
 - linux系统禁止root用户通过ssh登录及ssh的访问控制
		
Linux系统默认情况下,是可以通过ssh以root权限登录的.但出于安全考虑,这样的权限是不合适的,因为黑客可能通过暴力破解你的root密码,然后进入你的系统,oh,damn it..... 同样是 ...
 - 【转载】阿里云ECS Linux服务器禁止某些IP访问
		
在阿里云ECS Linux服务器运维过程中,如果发现某些IP访问异常,如怀疑有攻击行为或者怀疑是别人写的爬虫程序长时间占用你的服务器资源,则可以通过相关的设置来禁止这些IP段的访问,拒绝这些IP的请求 ...
 - linux下禁止root远程登录和添加新用户
		
https://www.cnblogs.com/jianz/p/7979250.html 一.添加和root权限一样的用户 1. adduser admin passwd admin (修改密码) ...
 - linux下禁止root远程登录
		
一.添加和root权限一样的用户 1. adduser admin passwd admin (修改密码) 2.修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示 ...
 
随机推荐
- STL——配接器、常用算法使用
			
学习STL,必然会用到它里面的适配器和一些常用的算法.它们都是STL中的重要组成部分. 适配器 在STL里可以用一些容器适配得到适配器.例如其中的stack和queue就是由双端队列deque容器适配 ...
 - Voltage Level-Shifter Output Waveform
			
http://www.cypress.com/knowledge-base-article/interfacing-sram-jtag-signals-using-voltage-level-shif ...
 - 枚举进程句柄File,Section,Mutant,Timer关闭Mutex句柄实现游戏多开
			
原文:http://www.cnblogs.com/Y4ng/archive/2012/09/06/EnumProcessHandle_EnumMutex.html 相信做过游戏多开的朋友就会发现,很 ...
 - .ipynb文件转.py文件
			
到要转的demo.ipynb所在目录下,然后输入命令: jupyter nbconvert --to script demo.ipynb
 - wxParse解析富文本内容使点击图片可以选中并实现放大缩小
			
wxParse解析富文本内容不多说,之前写过步骤介绍,主要是在使用过程中发现解析的富文本内容里有图片时有的可以点击放大缩小,有的点击却报错,找不到imgUrls. 经过排查发现:循环解析的富文本内容正 ...
 - apache2.4多站点配置
			
原来是跑单站,现在想跑多站,配置不算复杂,记录一下: 用默认的httpd.conf修改,去掉两个vhost的注释 servername指定任意一个合法的域名 如果是python,配置wsgi 修改ex ...
 - CentOS 7搭建Linux GPU服务器
			
1. CUDA Toolkit的安装 到https://developer.nvidia.com/cuda-gpus查询GPU支持的CUDA版本: 到https://developer.nvidia. ...
 - Windows 8系统默认开启的.Net Framework版本是4.0,而部分用户可能需要使用到3.5或以下版本,简单添加方法
			
从网络途径下载的.Net Framework3.5是无法直接在Windows 8系统上安装的,我们可以通过Windows 8的添加功能来实现 1.打开控制面板,点击”启用或关闭Windows 功能“ ...
 - Android 手动调用 返回键
			
有人想通过下面代码来实现手动调用返回键,很可惜会出现空指针异常. this.onKeyDown(KeyEvent.KEYCODE_BACK, null); 我们可以通过调用 onBackPressed ...
 - [转]Greenplum 执行计划之广播与重分布
			
关联数据在不同节点上,对于普通关系型数据库来说,是无法进行连接的.关联的数据需要通过网络流入到一个节点中进行计算,这样就需要发生数据迁移.数据迁移有广播和重分布两种.在GP中,每一个广播或重分布会产生 ...