私はrootとしてSSHを使用し、同じシステム上でSSHにrootを再設定します。そのため、2つのウィンドウが開いており、両方ともSSHを介してリモートコンピュータのルートディレクトリに接続されています。
シェルでこれら2つのセッションのリストをどのように表示できますか?
ベストアンサー1
who
またはより多くの情報w
をwho -a
入手してください。
このコマンドは、単にエンドデバイスのすべてのログインセッションを表示します。 SSHセッションはpts
列に示すように疑似ターミナルスレーブ()にありますが、TTY
すべてのpts接続がSSHセッションであるわけではありません。例えば、またはのxterm
ようscreen
な疑似端末装置を生成するプログラムはpts
。バラよりptsとttyの違いTTY
列のさまざまな値をよりよく説明してください。さらに、SFTPセッションはシェルログインセッションではないため、この方法ではSFTPセッションにログインした人を表示しません。
すべてのSSHセッションを明示的に表示する方法がわかりません。を介してログイン情報を読み取ったり、先ほど説明したようなツールを使用したり、utmp
@sebelkの回答で説明されているように、ネットワークツールを使用してポート22(またはSSHがある場所)で開いているTCP接続を見つけて、この情報を推論することができます。あります。どこでも)デーモンが聞いています)。wtmp
last
w
who
取り得る3番目のアプローチは、SSHデーモンのログ出力を解析することです。オペレーティングシステムの展開、SSHの展開、構成などによっては、ログ出力がさまざまな場所にある可能性があります。 RHEL 6システムでこれを見つけました/var/log/sshd.log
。 RHEL 7システムとArch Linuxシステムでjournalctl -u sshd
ログを表示するには、これを使用する必要があります。一部のシステムでは、SSHログをsyslogに出力できます。あなたのログは、次の場所または他の場所にある可能性があります。以下は、表示できる内容の例です。
[myhost ~]% grep hendrenj /var/log/sshd.log | 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
ログには、セッションの開閉時間、セッションが属する人、ユーザーが接続されている場所などが表示されます。しかし、あなたはたくさん人間が読める単純なイベントログから現在アクティブなセッションのリストを取得したい場合は、解析が完了した後でもログに実際にどのセッションを決定するのに十分な情報が含まれていないため、まだ正確なリストではない可能性があります。それでもアクティブです。 - 本質的に推測だけです。これらのログを使用して得られる唯一の利点は、情報が他の方法などの補助ソースを介さずにSSHDから直接提供されることです。
ただ使用することをお勧めしますw
。ほとんどの場合、必要な情報を入手できます。