J'ai juste SSH dans root, puis SSH dans root sur la même machine. J'ai donc deux fenêtres ouvertes SSH'd dans root sur mon ordinateur distant.
À partir du shell, comment puis-je voir une liste de ces deux sessions?
who
ou w
; who -a
pour plus d'informations.
Ces commandes affichent simplement toutes les sessions de connexion sur un terminal. Une session SSH sera sur un pseudo-terminal esclave ( pts
) comme indiqué dans la TTY
colonne, mais toutes les connexions pts ne sont pas des sessions SSH. Par exemple, les programmes qui créent un périphérique pseudo-terminal tel que xterm
ou screen
s’affichent comme pts
. Voir Différence entre pts et tty pour une meilleure description des différentes valeurs trouvées dans la TTY
colonne. De plus, cette approche n’indiquera à personne qui est connecté à une session SFTP, car les sessions SFTP ne sont pas des sessions de connexion shell.
Je ne connais aucun moyen de montrer explicitement toutes les sessions SSH. Vous pouvez déduire ces informations en lisant les informations de connexion depuis utmp
/ wtmp
via un outil tel que last
, w
ou who
comme je viens de le décrire, ou en utilisant des outils réseau tels que @sebelk, décrits dans leur réponse, pour rechercher des connexions tcp ouvertes sur le port 22 le (s) démon (s) écoute (s)).
Une troisième approche consiste à analyser la sortie du journal du démon SSH. Selon la distribution de votre système d'exploitation, la distribution SSH, la configuration, etc., la sortie de votre journal peut se trouver à différents endroits. Sur une boîte RHEL 6, j'ai trouvé les journaux /var/log/sshd.log
. Sur une boîte RHEL 7, et également sur une boîte Arch Linux, je devais utiliser journalctl -u sshd
pour afficher les journaux. Certains systèmes peuvent générer des journaux SSH vers syslog. Vos journaux peuvent être dans ces endroits ou ailleurs. Voici un exemple de ce que vous pourriez voir:
[myhost ~]% cat /var/log/sshd.log | grep hendrenj | grep session
May 1 15:57:11 myhost sshd[34427]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May 1 16:16:13 myhost sshd[34427]: pam_unix(sshd:session): session closed for user hendrenj
May 5 14:27:09 myhost sshd[43553]: pam_unix(sshd:session): session opened for user hendrenj by (uid=0)
May 5 18:23:41 myhost sshd[43553]: pam_unix(sshd:session): session closed for user hendrenj
Les journaux indiquent quand les sessions s'ouvrent et se ferment, à qui appartient la session, à partir duquel l'utilisateur se connecte, etc. Cependant, vous allez devoir faire beaucoup d'analyses si vous voulez obtenir cela d'un simple journal d'événements lisible par l'homme en une liste de sessions actives, et ce ne sera probablement pas une liste précise quand. vous avez terminé l'analyse, car les journaux ne contiennent pas assez d'informations pour déterminer les sessions qui sont toujours actives - vous ne faites que deviner. Le seul avantage que vous obtenez en utilisant ces journaux est que les informations proviennent directement de SSHD plutôt que via une source secondaire comme les autres méthodes.
Je recommande simplement d'utiliser w
. La plupart du temps, cela vous donnera les informations que vous souhaitez.
who -a
commandeVous pouvez voir chaque session ssh avec la commande suivante:
O peut-être cela peut être utile:
la source
pgrep -ai sshd
pgrep: invalid option -- 'i'
sur Ubuntu 14.04.-i
est disponible uniquement sur les goûts Mac / BSD. sur Ubuntu, vous pouvez utiliserpgrep -af ssd
. Voir serverfault.com/a/883270/116777 pour plus de détailsVous pouvez aussi utiliser
la source
Ajouté pour référence simple.
Si vous êtes dans un pseudo-shell (exemple: / dev / pts / 0), l’un des moyens les plus simples serait:
Il devrait renvoyer: votre ip et votre port et l'ip à laquelle vous êtes connecté et votre port
Vous pouvez également obtenir des informations en utilisant
tty
orwho
(w
): (edit: je vois que c'est maintenant la liste ci-dessus dans un autre post)la source
SECONDS
global. Vous pouvez utiliser ce viaecho $SECONDS
, qui affiche ensuite la duréeDévelopper la réponse de @ sebelk:
L'utilisation de la solution
netstat
est bonne mais nécessite des privilèges root. De plus, lenet-tools
paquet (qui fournitnetstat
) était déconseillé dans certaines distributions récentes de la distribution Linux ( https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/ ).Une autre solution consiste alors à utiliser le remplacement pour
netstat
,ss
. Par exemple (notez que vous n’avez plus besoin de root):la source
Vous pouvez utiliser
J'ai utilisé cela dans mon script .login pendant des années pour voir qui s'était récemment connecté au système. C'était un dispositif de sécurité pour homme pauvre pour voir si quelqu'un se trouvait sur le système en utilisant votre identifiant.
la source
last
peut ne pas être répertoriée.last
supports-p
? Qu'est ce que ça fait?"last from util-linux 2.31.1"
a à coup sûr.