Как проверить, действительно ли имя пользователя на ssh-сервере

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

isvaliduser [username] [ssh_server]
result: True

где isvaliduser — некая волшебная функция, проверяющая, существует ли пользователь с именем username по адресу ssh_server. Но осуществимо ли это?

Мое конкретное приложение: удаленный сервер, к которому мне нужно получить доступ, имеет динамический IP-адрес (я не могу использовать службу динамического DNS). Я могу составить список адресов серверов, содержащих мой целевой адрес, но мне нужен способ выяснить, какой из них мой. Я подумал, что один из способов сделать это — проверить, есть ли на каком-либо из адресов пользователь myusername. Но если у вас есть другое предложение по решению моей конкретной проблемы, я был бы рад услышать его.


person Delyle    schedule 23.12.2016    source источник
comment
Лучший способ сделать это — динамическая служба DNS, когда программа, работающая на сервере, обновляет запись DNS со своим собственным IP-адресом.   -  person Dark Falcon    schedule 23.12.2016
comment
@DarkFalcon К сожалению, служба динамического DNS для меня не вариант.   -  person Delyle    schedule 23.12.2016
comment
Точно так же не узнать, действительно ли имя пользователя на сервере, если вы также не хотите попытаться войти на сервер, что может быть угрозой безопасности в зависимости от того, как вы собираетесь это сделать. Вам, безусловно, потребуется предоставить больше информации, чем просто имя пользователя.   -  person Dark Falcon    schedule 23.12.2016
comment
Имейте в виду, что ssh-серверы спроектированы так, чтобы не раскрывать действительные имена пользователей, если вы также не предоставите надлежащие учетные данные (пароль) для входа в систему.   -  person nos    schedule 23.12.2016
comment
@nos есть ли способ проверить правильность комбинации пользователя и пароля с помощью сценария?   -  person Delyle    schedule 23.12.2016


Ответы (1)


Вы должны подключиться к этому серверу и проверить, находится ли пользователь в passwd, например:

ssh your_account_at_serve@[ssh_server] grep [username] /etc/passwd

Если вы сможете перечислить пользователей без проверки подлинности, это считается раскрытием информации и угрозой безопасности.

person Jakuje    schedule 23.12.2016
comment
Спасибо, я думаю, это должно сработать. Буду ли я подвергать себя уязвимости безопасности, используя этот метод? То есть, если я попытаюсь войти на сервер ssh, используя свое имя пользователя и пароль, сможет ли человек на другом конце записать имя и пароль, которые я пытался использовать? - person Delyle; 27.12.2016
comment
Нет. Если у вас есть одна учетная запись, в которую вы можете войти, вы можете проверить другие учетные записи таким же образом без каких-либо проблем с безопасностью. - person Jakuje; 27.12.2016