AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 984912
Accepted
yukashima huksay
yukashima huksay
Asked: 2017-12-11 02:12:50 +0800 CST2017-12-11 02:12:50 +0800 CST 2017-12-11 02:12:50 +0800 CST

如何获取可以通过 ssh 访问服务器的所有用户的列表?

  • 772

如何获取可以通过 ssh 连接到服务器的所有用户的列表ssh [email protected]?

请注意,我知道这个问题,这不是我想要的!

如果它有助于服务器在如此多的不同组中拥有如此多的用户,并且在主目录下有一些组目录和这些组目录中的许多用户目录。

编辑:

请注意,我得到的结果/etc/passwd不是我想要的,如下所示:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
statd:x:102:65534::/var/lib/nfs:/bin/false
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
shelladmin:x:1000:1000:shelladmin,,,:/home/shelladmin:/bin/bash
messagebus:x:104:106::/var/run/dbus:/bin/false
festival:x:105:29::/home/festival:/bin/false
ntp:x:106:108::/home/ntp:/bin/false

这个列表甚至不包括我自己的用户名!更不用说其他 1000 个用户了。

编辑2:

所以我和 Yaron 聊了一会儿,这里有一些关于系统的更多信息:

-bash-4.2$ ls -lsa /etc/init.d/nis
ls: cannot access /etc/init.d/nis: No such file or directory
-bash-4.2$ ls -lsa /var/yp
ls: cannot access /var/yp: No such file or directory
if it helps, this is the putput of ls -lsa /var
-bash-4.2$ ls -lsa /var
total 48
4 drwxr-xr-x 12 root root 4096 Oct 25 2016 .
4 drwxr-xr-x 22 root root 4096 Oct 25 2016 ..
4 drwxr-xr-x 2 root root 4096 Oct 26 2016 backups
4 drwxr-xr-x 10 root root 4096 Oct 25 2016 cache
4 drwxr-xr-x 34 root root 4096 Oct 25 2016 lib
4 drwxrwsr-x 2 root staff 4096 May 7 2012 local
0 lrwxrwxrwx 1 root root 9 Oct 25 2016 lock -> /run/lock
4 drwxr-xr-x 9 root root 4096 Dec 10 06:25 log
4 drwxrwsr-x 2 root mail 4096 Jul 30 00:51 mail
4 drwxr-xr-x 2 root root 4096 Nov 21 2012 opt
0 lrwxrwxrwx 1 root root 4 Oct 25 2016 run -> /run
4 drwxr-xr-x 5 root root 4096 Oct 25 2016 spool
4 drwxrwxrwt 12 root root 4096 Dec 10 08:18 tmp
4 drwxr-xr-x 2 root root 4096 Feb 16 2013 www
-bash-4.2$ getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
statd:x:102:65534::/var/lib/nfs:/bin/false
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
shelladmin:x:1000:1000:shelladmin,,,:/home/shelladmin:/bin/bash
messagebus:x:104:106::/var/run/dbus:/bin/false
festival:x:105:29::/home/festival:/bin/false
ntp:x:106:108::/home/ntp:/bin/false
-bash-4.2$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd: files ldap
group: files ldap
shadow: files ldap

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis
-bash-4.2$ cd /etc/sssd/
-bash: cd: /etc/sssd/: No such file or directory
ssh
  • 2 2 个回答
  • 112310 Views

2 个回答

  • Voted
  1. Best Answer
    kris
    2019-10-26T20:20:26+08:002019-10-26T20:20:26+08:00

    我的答案来自这个stackoverflow 问题的答案。

    列出所有“用户”

    我期待有一种方法可以说,向我展示所有可以通过 ssh 连接到我的服务器的用户。
    我没有意识到人员用户和系统“用户”之间没有区别,因此虽然您可以使用此命令列出所有用户,但它可能比您预期/希望的要长得多:

    cat /etc/passwd
    

    显示所有具有有效 shell 的用户

    如果用户 shell 设置为,/etc/false则他们无法登录,因此这会减少可能的 ssh 用户列表:

    cat /etc/passwd | grep -v /bin/false
    

    但这仍然是一个很大的列表。


    实际有权访问的用户

    如果用户没有有效密码,这可能表明他们无法登录。
    该/etc/shadow文件包含加密的密码,一个“!” 或此文件第 2 列中的“*”表示未设置密码。我们可以过滤掉那些拥有有效密码的新用户(可能更短)列表:

    cat /etc/shadow | grep '^[^:]*:[^\*!]'
    

    有关正则表达式的详细信息:

    1. ^- 图案必须位于行首
    2. [^:]*- 匹配任何不:介于 0 和无限时间之间的字符
    3. ::-从字面上匹配字符
    4. [^\*!]- 匹配任何不是的字符*,!一次。

    请注意,正则表达式是用单引号括起来的,这很重要,因为正则表达式的许多特殊字符对 bash 也是特殊的(请参阅此答案的第 2 部分)

    唯一未涵盖的其他帐户是他们在其用户帐户上拥有 ssh 密钥的位置,因此您还需要查看拥有主文件夹的用户:

    ls -l /home
    

    限制访问

    好的 - 所以现在我的列表有点有限 - 我想删除几个帐户的访问权限。
    @Yaron 的回答更详细地描述了这一点(就像this一样),但很简短;该/etc/ssh/sshd_config文件说明了哪些帐户可以 ssh,如果您在其中设置AllowUsers,则其他用户将受到限制 - 因此您可以编辑该文件以明确说明您希望允许谁登录:

    vi /etc/ssh/sshd_config
    

    并添加一行说

    AllowUsers user1 user2
    

    最后重启ssh服务

    service ssh restart
    

    (取决于您的系统 - 请参阅此以在其他系统上重新启动服务)

    • 17
  2. Yaron
    2017-12-11T02:21:53+08:002017-12-11T02:21:53+08:00

    默认情况下,特定机器的所有用户都可以使用 ssh 登录到这台机器。

    您可以配置sshd为仅允许部分机器用户访问。

    Ubuntu ssh 手册页指定您可以允许/拒绝特定用户/组sshd_config — OpenSSH SSH daemon configuration file-/etc/ssh/sshd_config

    • AllowUsers此关键字后面可以跟一个用户名模式列表,以空格分隔。
    • 如果指定,则仅允许与其中一种模式匹配的用户名登录。
    • 只有用户名有效;无法识别数字用户 ID。
    • 默认情况下,所有用户都允许登录。
    • 如果该模式采用 USER@HOST 的形式,那么 USER 和 HOST 会被分别检查,从而限制来自特定主机的特定用户的登录。
    • 允许/拒绝指令按以下顺序处理:DenyUsers、AllowUsers、DenyGroups,最后是 AllowGroups

    通过在服务器机器上运行以下命令可以找到服务器机器中所有用户的列表:

    cat /etc/passwd
    

    根据更新的问题,/etc/passwd不包含多个用户名。这可能是因为服务器是网络信息服务、LDAP 或 SAMBA 的一部分。

    要查看您的服务器已知的所有用户和组,无论它们来自什么来源,您最好使用以下getent命令:

    getent passwd
    

    讨论总结:

    您的服务器上似乎有 LDAP,并且它被定义为禁用访问 LDAP 用户列表。
    否则getent passwd会显示passwd文件

    • 6

相关问题

  • Gnome-terminal 快捷方式在选项卡中打开多个 ssh 连接

  • 通过 SSH 禁用密码访问?

  • ssh 如何使用多个私钥?

  • 如何通过一个 SSH 连接拥有多个终端会话?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve