私のオペレーティングシステムにsshを介してログインする複数のユーザーがいる場合は、各/ dev / pts / N(ここでNは整数)に関連付けられている物理システムを見つける方法はありますか?私が知っているすべては
WHO
そして
補助キー
このコマンドはデバイスファイルに関連付けられているユーザーまたはプロセスを表示しますが、ユーザー/プロセスが発生した実際のシステムに関する詳細情報を取得できますか?おそらくIPですか?
答え1
たとえば、SSH(およびmosh)は実際にutmp
/ファイルを入力し、リモートIPアドレスを含むいくつかの有用な情報を読み取ります。wtmp
who
last
~$ who
...
ilkkachu pts/26 2022-05-03 16:27 (127.0.0.1)
$ last -1a
ilkkachu pts/26 Tue May 3 16:27 still logged in 127.0.0.1
正しいtty名を見つけるためにgrepが欲しいかもしれません。
$ who | grep "pts/26"
ilkkachu pts/26 2022-05-03 16:27 (127.0.0.1)
あるいは、開かれたファイルのリストを追跡して、tty で fd を保持する SSH プロセスを見つけて、対応するネットワークソケットを見つけることもできます。
答え2
擬似端末は、「物理機械」に関連付けられていません。これは、実行中のプロセス(sshセッション、GUIターミナルウィンドウ、screen / tmuxウィンドウなど)に関連付けられます。これを使用して、ps
どのプロセスが特定のデバイスを使用しているかを見つけ、そこからpts
逆追跡できます。
実行したい操作にはss
(またはnetstat
)コマンドがより便利です。たとえば、次のコマンドを実行して、アクティブなSSH接続に関連付けられているリモートアドレスを見つけることができます。
$ ss -tnp | grep sshd | grep ESTAB
ESTAB 0 0 192.168.1.200:22 1.2.3.4:39240 users:(("sshd",pid=2706,fd=3))
ESTAB 0 0 192.168.1.200:22 4.3.2.1:39242 users:(("sshd",pid=2809,fd=3),("sshd",pid=2771,fd=3))