/dev/pts/N과 연관된 물리적 머신 찾기

/dev/pts/N과 연관된 물리적 머신 찾기

내 운영 체제에 ssh를 통해 로그인하는 여러 사용자가 있는 경우 각 /dev/pts/N(여기서 N은 정수)과 연관된 물리적 시스템을 찾을 수 있는 방법이 있습니까? 내가 아는 전부는

WHO

그리고

보조 키

이 명령은 장치 파일과 연결된 사용자 또는 프로세스를 표시하지만 사용자/프로세스가 발생한 실제 시스템에 대한 자세한 정보를 얻을 수 있습니까? 아마도 IP일까요?

답변1

예를 들어 SSH(및 mosh)는 실제로 utmp/ 파일을 채우고 원격 IP 주소를 포함한 몇 가지 유용한 정보를 읽습니다.wtmpwholast

~$ 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))

관련 정보