¿Cómo puedo ver si los usuarios han iniciado sesión a través de sftp?

11

Ejecuto un servidor de archivos Linux para mi oficina y usamos SFTP para socios remotos para iniciar sesión y descargar archivos. ¿Hay alguna manera de ver si hay conexiones o inicios de sesión activos para poder saber cuándo es seguro realizar el mantenimiento en la máquina?

Dado que la máquina está sirviendo casi constantemente archivos grandes, el mantenimiento programado a menudo se interrumpe debido a que alguien carga

aVeRTRAC
fuente

Respuestas:

11

También puedes hacer:

ps -ef | grep '[s]shd' | grep -v ^root

que debería mostrar las sesiones sshd (que se usan para sftp). Noto en mi máquina que mi línea de comando de proceso sshd contiene '$ USER @ notty', lo cual tiene sentido ya que no he iniciado sesión con una sesión de terminal. Puede apretar el grep anterior con:

ps -ef | grep '[s]shd:.*@notty' | grep -v ^root

Por cierto: los corchetes en grep no deben tener el proceso 'grep sshd' que se muestra en la lista de procesos. [s] shd coincide con sshd, pero no coincide con sí mismo. Guarda un 'grep -v grep'

Rich Homolka
fuente
44
Terminé usando netstat -atn | grep ':22'para ver si había tráfico abierto en el puerto 22. También descubrí que podía verificar los registros sshd, ubicados en '/var/log/auth.log' en mi sistema para ver si todos los usuarios que habían abierto un La sesión había sido cerrada.
aVeRTRAC
2

También podrías intentar fuser -u ssh/tcp

Uli
fuente
1

Creo que puedes usar el programa de línea de comandos whopara ver esto. He notado algunos informes de que hacerlo no funciona, pero sigo pensando que podría funcionar (tal vez sea una configuración ssh).

sftp está construido sobre SSH . Significa el "Protocolo de transferencia de archivos SSH". Y cuando haya iniciado sesión a través de ssh, 'who' lo incluirá como usuario conectado con su salida. Espero que esto también funcione con sesiones activas de sftp.

Esta discusión de 2008 también sugiere que puede usar 'netstat' para esto. También incluye una sugerencia para ejecutar 'who' a través de 'watch' para que pueda ver las actualizaciones sin hacer nada.

James T Snell
fuente
1
quién no muestra a los usuarios que iniciaron sesión a través de ssh (acabo de iniciar sesión desde mi computadora portátil y lo comprobé).
aVeRTRAC
Eso es una locura, eso tiene que ser un escenario ... Como estoy bastante seguro de que lo ha hecho por mí ... durante años y años y años ...
James T Snell
¿Alguna idea de dónde estaría esa configuración? Probé esto en un servidor público en mi trabajo y recuperé lo que parecen resultados realistas con varios usuarios en la lista.
aVeRTRAC
1
quién muestra quién está ejecutando actualmente un shell de inicio de sesión. Dependiendo de lo que esté ejecutando el usuario, puede o no contar como un shell de inicio de sesión. La mitad del servidor de sftp no lo hace, de ahí que las sesiones de sftp no aparezcan en quién.
Perkins