Как получить список всех пользователей, которые могут получить доступ к серверу через ssh?

Как я могу получить список всех пользователей, которые могут подключиться по ssh к серверу через ssh username@server.domain?

Обратите внимание, что мне известен этот вопрос , и это не делаю то, что я хочу!

Если это помогает, сервер имеет так много пользователей в стольких разных группах, а в домашнем каталоге есть несколько групповых каталогов и много пользовательских каталогов в этих групповых каталогах.

Отредактировано:

Обратите внимание, что результат, который я получаю из /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:

Так что я немного поболтал с Яроном и вот еще немного информации о системе:

-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
5
задан 10 December 2017 в 18:12

2 ответа

Мой ответ тянет от ответов до этого stackoverflow вопроса.

Список всех "пользователей"

Я ожидал, что будет способ, которым я мог просто сказать, показать мне всех пользователей, которые могут ssh на мой сервер.
То, что я не понял, - то, что нет различия между людьми-пользователями и системой - "пользователи", поэтому в то время как можно перечислить всех пользователей с этой командой, это, вероятно, намного длиннее, чем Вы были expecting/hoping-for:

cat /etc/passwd

Показ всех пользователей с допустимой оболочкой

Если пользователи окружают, установлен на /etc/false затем они не могут войти в систему, таким образом, это обрезает вниз список возможных пользователей SSH:

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

Но это - все еще довольно большой список.


У пользователей, которые имеют на самом деле, есть доступ

Если у пользователя нет действительного пароля, который мог бы быть признаком, что они не могут войти в систему.
/etc/shadow файл содержит зашифрованные пароли, a"!" или "*" в 2-м столбце этого файла означает, что никакой пароль не установлен. Мы можем фильтровать тех, которые для нового (вероятно, короче) списком пользователей, которые имеют действительный пароль:

cat /etc/shadow | grep -v \*\: | grep -v \!\:

(Примечание: та команда могла быть добита большего успеха - не стесняются обновлять мой ответ),

Единственные другие учетные записи, которые не покрыты этим, были бы то, где у них есть ssh, включают их учетную запись пользователя, таким образом, необходимо также посмотреть на пользователей, которые имеют домашнюю папку:

ls -l /home

Ограничение доступа

Хорошо - поэтому теперь у меня есть несколько ограниченный список - и я хочу удалить доступ для нескольких учетных записей.
Ответ @Yaron описывает это более подробно (как делает это), но кратко; /etc/ssh/sshd_config файл говорит, какие учетные записи могут ssh, и если Вы устанавливаете AllowUsers там затем другие пользователи будут ограничены - таким образом, можно будет отредактировать тот файл, чтобы быть явными о том, кто Вы хотите позволить входить в систему:

vi /etc/ssh/sshd_config

И добавьте высказывание строки

AllowUsers user1 user2

Наконец перезапустите ssh сервис

service ssh restart

(в зависимости от Вашей системы - посмотрите это для сервисного перезапуска в других системах),

2
ответ дан 23 November 2019 в 09:11

По умолчанию все пользователи определенной машины могут войти в эту машину, используя ssh.

Вы можете настроить sshd, чтобы разрешить доступ только для части пользователей машины.

Ubuntu ssh man page Укажите, что вы можете разрешить / запретить определенных пользователей / групп в sshd_config — OpenSSH SSH daemon configuration file - /etc/ssh/sshd_config

  • AllowUsers ] За этим ключевым словом может следовать список шаблонов имен пользователей, разделенных пробелами.
  • Если указано, вход в систему разрешен только для имен пользователей, которые соответствуют одному из шаблонов.
  • Допустимы только имена пользователей; числовой идентификатор пользователя не распознается.
  • По умолчанию вход в систему разрешен для всех пользователей.
  • Если шаблон принимает форму USER @ HOST, тогда USER и HOST проверяются отдельно, ограничивая входы в систему для определенных пользователей с определенных хостов.
  • Директивы allow / deny обрабатываются в следующем порядке: DenyUsers, AllowUsers, DenyGroups, и, наконец, AllowGroups
]

Чтобы найти список всех пользователей на сервере, выполните следующую команду на сервере:

cat /etc/passwd

Согласно обновленному вопросу, /etc/passwd не делает т несколько имен пользователей. Это может быть результатом того, что сервер является частью Network Information Service , LDAP или SAMBA.

Для просмотра всем пользователям & amp; группы, известные вашему серверу, из каких бы источников они ни приходили, вы бы предпочли использовать команду getent:

getent passwd

Краткое обсуждение:

Похоже, что у вас включен LDAP сервер, и он был определен для отключения доступа к списку пользователей LDAP.
В противном случае getent passwd покажет вам файл passwd

2
ответ дан 10 December 2017 в 18:12

Другие вопросы по тегам:

Похожие вопросы: