Назад | Перейти на главную страницу

Проверить, кто вошел в систему на другой машине без ssh?

Есть ли способ узнать, кто вошел в систему на другой машине Linux в сети, учитывая имя машины, а не просто подключившись к этой машине и запустив who? Я бы предпочел способ напрямую в python, но с помощью команды было бы хорошо.

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

ssh user@host who

И если вы настроите ключ, вы можете сделать это без запроса пароля.

Если на машине Linux есть finger демон установлен, вы можете:

finger @linux_machine

Тем не мение, finger в наши дни обычно считается небезопасным и обычно не доступен по умолчанию.

Вы можете настроить службу, которая сделает это за вас на удаленном компьютере и просто вернет результат; или вы пишете сценарий, который выполняет всю процедуру за вас. Но я не понимаю, почему кто-либо снаружи (за пределами машины) должен иметь доступ к системной информации без входа в систему (и как только вы войдете в систему, вы можете вместо этого использовать SSH).

Это зависит от обстоятельств, которые необходимо настроить, чтобы вы могли это сделать. Один из возможных вариантов - "простаки"

http://www.oreillynet.com/linux/cmd/cmd.csp?path=r/rusers

Если вы предпочитаете программно выполнять операцию ssh через python, вам следует взглянуть на paramiko, собственную библиотеку ssh для python.

Есть хорошая статья для просмотра Вот

Роб

Я действительно смотрел на этот вопрос, и все ответы не на Python. Лучшее, что я нашел в Интернете, - это psutil. См. Документацию psutil в Google Code

Сначала установите psutil:

pip install psutil

После этого все просто, например, запустить консоль python с терминала:

import psutil 

psutil.users()

Вот результат: [пользователь (name = 'root', terminal = 'pts / 0', host = 'your-local-host-from-isp.net', start = 1358152704.0)]

Интересно, как можно было обнаружить такое, не подключаясь к машине ..

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

Краткий ответ: Нет, если машина специально не настроена для этого.

Длинный ответ: на машине должна быть запущена служба на известном порту, к которому вы можете подключиться, чтобы запросить эту информацию. Альтернативой является использование ожидание чтобы программно ssh в машину, запустите who и проанализируем результаты.

Сложным способом было бы найти способ получить информацию из службы каталогов. Многие, многие люди имеют корпоративные системы с их списком авторизованных пользователей / управлением паролями, поступающими из ActiveDirectory. Если бы вы могли найти способ связать свой вопрос со службой выдачи билетов Kerberos вместе с недолговечными билетами, он просто может быть возможно по крайней мере сделать вывод кто, вероятно, вошел в систему. Если система сообщает службе каталогов, когда пользователь выходит из системы, все становится немного проще.

Вы, вероятно, хотели получить ответ «палец» и просто не знали этого. Но где finger пошел не так, как только он начал позволять пользователям создавать $HOME/.finger потому что из-за этого возникли всевозможные проблемы (именованные каналы и т. д.). Вдобавок у протокола finger были серьезные недостатки, которые допускали обычное переполнение буфера и т. Д. Некоторые параноики считают, что даже перечисление идентификаторов или имен допустимых пользователей дает вектор атаки. Если бы вы могли сканировать сеть в поисках системы, которую использовал ведущий исследователь, это была бы машина с доступом к большому количеству материалов, готовых для промышленного шпионажа.

Еще один интересный трюк - заставить систему уведомлять центральную службу всякий раз, когда пользователь подключается или отключается. Представьте себе IRC-бота, чат-сервер или службу REST. Любой процесс может периодически искать интерактивные сеансы и передавать информацию в одностороннем порядке в приложение на другом конце. Это приложение затем сопоставляет ленту, чтобы представить список тех, кто находится в «сети», на веб-странице. Если это для интересных деловых или образовательных программ, это может быть весьма интересно, потому что вы даже можете входить в систему через веб-приложение, такое как веб-почта.

Только целевая машина знает, кто в нее входит.

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

Вы можете написать на серверах, которые вы хотите отслеживать, демон, который периодически подключается к центральному серверу и отправляет ему эту информацию. Возможно, через соединение с центральной базой данных по TCP, тогда просто пусть демон запустит «who» и загрузит данные через некоторый SQL.