什么是 SSH ?
openssh 全称为 OpenBSD Secure Shell。Secure Shell(ssh)是一个自由开源的网络工具,它能让我们在一个不安全的网络中通过使用 Secure Shell(SSH)协议来安全访问远程主机。
它采用了客户端-服务器架构(C/S),拥有用户身份认证、加密、在计算机和隧道之间传输文件等功能。
我们也可以用 telnet
或 rcp
等传统工具来完成,但是这些工具都不安全,因为它们在执行任何动作时都会使用明文来传输密码。
如何在 Linux 中允许用户使用 SSH?
通过以下内容,我们可以为指定的用户或用户列表启用 ssh
访问。如果你想要允许多个用户,那么你可以在添加用户时在同一行中用空格来隔开他们。
为了达到目的只需要将下面的值追加到 /etc/ssh/sshd_config
文件中去。 在这个例子中, 我们将会允许用户 user3
使用 ssh。
-
# echo "AllowUsers user3" >> /etc/ssh/sshd_config
你可以运行下列命令再次检查是否添加成功。
-
# cat /etc/ssh/sshd_config | grep -i allowusers
-
AllowUsers user3
这样就行了, 现在只需要重启 ssh
服务和见证奇迹了。(下面这两条命令效果相同, 请根据你的服务管理方式选择一条执行即可)
-
# systemctl restart sshd
-
或
-
# service restart sshd
接下来很简单,只需打开一个新的终端或者会话尝试用不同的用户身份访问 Linux 系统。是的,这里 user2
用户是不被允许使用 SSH 登录的并且会得到如下所示的错误信息。
-
# ssh user2@192.168.1.4
-
user2@192.168.1.4's password:
-
Permission denied, please try again.
输出:
-
Mar 29 02:00:35 CentOS7 sshd[4900]: User user2 from 192.168.1.6 not allowed because not listed in AllowUsers
-
Mar 29 02:00:35 CentOS7 sshd[4900]: input_userauth_request: invalid user user2 [preauth]
-
Mar 29 02:00:40 CentOS7 unix_chkpwd[4902]: password check failed for user (user2)
-
Mar 29 02:00:40 CentOS7 sshd[4900]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.6 user=user2
-
Mar 29 02:00:43 CentOS7 sshd[4900]: Failed password for invalid user user2 from 192.168.1.6 port 42568 ssh2
与此同时用户 user3
被允许登入系统因为他在被允许的用户列表中。
-
# ssh user3@192.168.1.4
-
user3@192.168.1.4's password:
-
[user3@CentOS7 ~]$
输出:
-
Mar 29 02:01:13 CentOS7 sshd[4939]: Accepted password for user3 from 192.168.1.6 port 42590 ssh2
-
Mar 29 02:01:13 CentOS7 sshd[4939]: pam_unix(sshd:session): session opened for user user3 by (uid=0)
如何在 Linux 中阻止用户使用 SSH ?
通过以下内容,我们可以配置指定的用户或用户列表禁用 ssh
。如果你想要禁用多个用户,那么你可以在添加用户时在同一行中用空格来隔开他们。
为了达到目的只需要将以下值追加到 /etc/ssh/sshd_config
文件中去。 在这个例子中, 我们将禁用用户 user1
使用 ssh
。