학교에서 내 가상 머신에 원격으로 로그인하는 사람이 몇 명인지 계산해야 합니다. 누군가가 호스트 컴퓨터에서 SSH로 접속하고 있는지는 알 수 있지만 누군가가 VNC를 통해 XWindows 세션에 텔넷으로 연결하고 있는지, 아니면 학교 콘솔에 앉아 있는지는 알 수 없습니다. 집에서 학교 VM에 로그인하고 who 작업을 수행할 때 나만 로그인하면 다음이 표시됩니다.
user1 tty7 2013-10-10 23:31 (:1)
user1 pts/0 2013-10-10 23:23 (:1.0)
참고: 누구도 가상 머신에 직접 로그인할 수 없습니다. 학교 LAN에 로그인한 다음 VM 호스트에 로그인하고 VM에 로그인해야 합니다. 가상 머신의 호스트 머신에서 로그인해야 하는지 알고 싶습니다. 이것이 원격 로그인으로 간주됩니까?
답변1
WHO
이를 달성하려면 여러 가지 방법을 사용해야 합니다. 이 who
명령을 사용하면 누가 활성 셸을 가지고 있는지 또는 ssh
가상 머신에 진입했는지 확인할 수 있습니다.
$ who | cut -d' ' -f1 | sort -u
saml
사용자
user
이 명령을 사용하여 누가 로그인했는지 확인할 수도 있습니다. 이들은 현재 /var/run/utmp
로그 파일 & 에 활성 상태로 표시된 사용자입니다 /var/log/wtmp
.
$ users | sed 's/ /\n/g'|sort -u
saml
누가 다시 방문했는가
이 명령을 사용하면 who
다음 줄을 볼 수 있습니다.
$ who
saml tty1 2013-10-06 10:05 (:0)
saml pts/0 2013-10-06 10:07 (:0.0)
saml pts/5 2013-10-07 11:48 (:0.0)
두 번째 열(tty1)은 물리적 터미널 중 하나에 로컬로 연결된 사람을 나타냅니다. 또한 행의 다섯 번째 열에 (`:0)이 표시되는 것을 볼 수 있습니다. 이는 누군가가 가상 머신에 직접 앉아 X 데스크탑을 실행하고 있음을 의미합니다.
다른 줄은 pts/0
의사 터미널이며, 일반적으로 상자에 gnome-terminal 또는 SSH에서 탭을 만들 때 생성됩니다.
가상 네트워크 연결?
이건 좀 까다롭습니다. 특히 VNC 서버가 X에 통합되어 있기 때문에 이를 직접적으로 알 수 있는 방법은 없습니다. 검색 프로세스에는 아무것도 표시되지 않습니다.
$ pgrep -f vnc
$
VNC 네트워크 연결을 찾을 수 있습니다.
$ sudo netstat -anpt | grep -i Xorg
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 192.168.1.3:5900 192.168.1.20:41064 ESTABLISHED 3948/Xorg
tcp 0 0 :::6000 :::* LISTEN 3948/Xorg
여기서는 IP 192.168.1.3에서 일반적으로 VNC에 사용되는 포트 5900으로의 VNC 연결이 있음을 알 수 있지만 이 포트는 결코 보장되지 않습니다.
연결이 끊어지면 연결은 다음과 같습니다.
$ netstat -anpt | grep -i Xorg
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 3948/Xorg
tcp 0 0 :::6000 :::* LISTEN 3948/Xorg
또한 X 서버가 VNC를 실행하고 있는지 확인할 수 있습니다(그런 것으로 보입니다).
$ lsof -p 3948 | grep -i vnc
Xorg 3948 root mem REG 253,0 394420 48693751 /usr/lib/xorg/modules/extensions/libvnc.so
VNC 사용자를 위한 최선의 옵션은 실제로 컴퓨터에 있는 사용자(tty1과 같은 물리적 터미널의 사용자), 즉 X 데스크톱을 실행하고 VNC를 사용하여 연결하는 GNOME 세션이 있는 사람을 제거하는 것입니다.
$ ps -f -p $(pgrep -f gnome-session)
UID PID PPID C STIME TTY TIME CMD
root 22240 3943 0 Sep29 ? 00:00:00 /usr/bin/gnome-session