質問: 接続されているすべてのsshセッションをリストしますか? ルートにssh接続し、同じマシンのルートに再度ssh接続しました。したがって、2つのウィンドウを開いて、リモートマシンのルートにsshで接続します。シェルから、これらの2つのセッションのリストを表示するにはどうすればよいですか?
回答: whoまたはw;追加情報については、who -a。これらのコマンドは、端末デバイス上のすべてのログインセッションを表示するだけです。 pts列に示されているように、sshセッションは疑似端末スレーブ(tty)上にありますが、すべてのpts接続がsshセッションであるとは限りません。たとえば、xtermやscreenなどの疑似端末デバイスを作成するプログラムは、ptsと表示されます。 tty列にあるさまざまな値の詳細については、 ptsとttyの違い を参照してください。さらに、sftpセッションはシェルログインセッションではないため、このアプローチではsftpセッションにログインしているユーザーは表示されません。すべてのsshセッションを明示的に表示する方法がわかりません。この情報は、utmp、wtmp、またはlastなどのツールを使用してw/whoからログイン情報を読み取ることで推測できます。説明したばかり、または回答に記載されている@sebelkなどのネットワークツールを使用して、ポート22(またはsshデーモンがリッスンしている場所)で開いているtcp接続を見つけます。3番目のアプローチとして、sshデーモンからのログ出力を解析する方法があります。 osディストリビューション、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 ログには、セッションがいつ開いたり閉じたりしたか、セッションが誰に属しているか、ユーザーがどこから接続しているかなどが表示されます。ただし、これを単純な人間が読めるイベントのログからイベントに取得したい場合は、lotの解析を行う必要があります。ログには実際にどのセッションがまだアクティブであるかを判断するのに十分な情報が含まれていないため、解析が完了しても、おそらく正確なリストにはならない可能性があります。これらのログを使用することで得られる唯一の利点は、情報が他の方法のような中古のソースを介するのではなく、sshdから直接得られることです。wを使用することをお勧めします。ほとんどの場合、これにより必要な情報が得られます。