Linux用户只能使用SSH端口转发的配置

这个用户没有交互权限

基础:Ubuntu Server 24.04 Minimal 基础环境

查看所有用户:cat /etc/passwd

查看所有可交互登录的用户:grep -Ev '/sbin/nologin$|/bin/false$' /etc/passwd

sudo passwd -S nginx 命令返回的信息是 nginx L 2025-11-14 -1 -1 -1 -1 ,如何解读?

passwd -S命令的输出通常包含以下字段(以空格分隔):

  1. 用户名
  2. 密码状态(Password status)
    • L:表示账户被锁定(locked)
    • P:表示有可用密码(usable password)
    • NP:表示无密码(no password)
  3. 最近一次密码修改时间(Last password change):如果账户被锁定,这个日期可能表示锁定生效的日期或其他
  4. 密码最小年龄(Minimum password age):表示在多少次天内不允许修改密码。如果为-1,表示没有设置。
  5. 密码最大年龄(Maximum password age):表示多少天后密码过期。如果为-1,表示密码永不过期。
  6. 密码警告期(Password warning period):表示在密码过期前多少天开始警告用户。如果为-1,表示没有警告。
  7. 密码禁用期(Password inactivity period):表示密码过期后多少天账户被禁用。如果为-1,表示不会禁用。

注意:服务账户通常应该保持锁定状态,因为它们不需要交互式登录权限。如 nginx、apache、mysql 等,且配置的shell是不可登录的。

  • 解锁账户:sudo passwd -u xxx
  • 锁定账户:sudo passwd -l xxx
grep -E 'nginx|mysql' /etc/passwd
mysql:x:107:107:MariaDB Server,,,:/nonexistent:/bin/false
nginx:x:999:988:nginx user:/nonexistent:/usr/sbin/nologin

/bin/false 是 Linux 系统中用于阻止用户登录的一种方法。它是一个简单的命令,什么也不做,只是返回一个非零的退出状态,然后立即退出。
/bin/false 和 /sbin/nologin 都可以阻止用户登录,但它们有以下区别:

  • 反馈信息:/bin/false 不会向用户提供任何提示或错误信息,而 /sbin/nologin 会显示一条消息(例如 “This account is currently not available.”)。
  • 适用场景:/bin/false 更适合永久禁止登录的账户,尤其是服务账户;/sbin/nologin 更适合临时禁用用户登录,同时向用户提供原因说明。

修改用户的shell

-L是锁定,-s是修改用户shell

Bash
sudo usermod -L -s /usr/sbin/nologin pubFiles
sudo usermod -s /usr/sbin/nologin std

一个只使用ssh端口转发隧道的用户,就需要配置为 usermod -s /usr/sbin/nologin,另外,在客户端连接时,也需要配置不启动shell,否则连接会被自动退出。

  • 使用ssh.exe,需要添加参数-n
  • 使用putty.exe,需要选中下图的参数。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注