나는 이 질문을 다시 받고 싶다.이것우편 엽서.
사용자가외딴클라이언트 마운트 디렉터리현지의서버는 그의 파일 시스템에서 볼 수 있지만 또는 를 sshfs
통해 서버에서는 볼 수 없습니다 . 연결된 질문에는 다음 서버에 대한 해결 방법이 제안되어 있습니다.who
last
ps aux | grep -i sftp | grep -v grep
그러나 많은 정보를 제공하지는 않습니다. 사용자 이름과 SFTP 연결의 존재만 제공합니다. 선택한 답변에 대한 댓글에서와 같이 묻고 싶었습니다.섬기는 사람):
1) 더 간결하고 전용 명령이 있습니까?
2) 더 많은 정보를 얻을 수 있는 방법이 있나요? (서버로부터) 알고 싶습니다: 작업을 수행한 사용자 이름, 원격 클라이언트의 호스트 이름 또는 IP 주소, 서버의 설치 디렉터리 및 설치가 시작된 시간.
이는 서버가 Ubuntu 14.04를 실행하고 있다고 가정하지만 모든 *nix 시스템에서 이러한 명령을 사용할 수 있다면 좋을 것입니다.
답변1
서버 측은 클라이언트가 SSHFS를 통해 액세스하는 SFTP 세션과 클라이언트가 다른 클라이언트 소프트웨어를 통해 액세스하는 SFTP 세션을 구분할 수 없습니다. 그러나 SFTP 세션에 대한 더 많은 정보를 확실히 얻을 수 있습니다.
각 SFTP 세션에는 연관된 sftp-server
프로세스가 있습니다. Linux에서는 실행 중인 프로세스 ID를 sftp-server
사용 하거나 나열할 수 있습니다 . 또는 다음 POSIX 호환 명령을 사용할 수 있습니다(필요한 경우 경로 조정 ).pgrep -x sftp-server
ps -C sftp-server
sftp-server
ps -e -o pid,cmd | sed -n 's!^\([0-9]*\) /usr/lib/openssh/sftp-server$!\1!p'
이 프로세스는 SFTP에 로그인하는 데 사용되는 사용자 계정으로 실행됩니다. SFTP 세션이 시작되면 시작됩니다.
ps -e -o pid,user,etime,cmd |
awk '$4 == "/usr/lib/openssh/sftp-server" {print "pid=" $1, "user=" $2, $3 " ago"}'
POSIX의 시작 시간 표시는 번거롭습니다. 날짜가 아니라 프로세스가 시작된 이후 경과된 시간을 알 수 있습니다. 대부분의 시스템에는 더 편리한 기능이 있습니다. Linux에는 더 많은 형식을 사용할 수 있지만 실제로 편리한 형식은 없습니다. 날짜는 필드 22 에서 가져오지만 /proc/$pid/stat
번거롭기도 합니다. 이전(<2.6) 커널을 제외하고는 클록 주기(나누거나 getconf CLK_TCK
반환된 값 sysconf(_SC_CLK_TCK)
)의 시작 날짜입니다. jiffies(값을 찾기가 더 어렵습니다) 안정적으로 출력됩니다. ) 시작 시간은 시작 이후 초 단위로 표시되는 btime
줄의 값 입니다./proc/stat
연대(당신이 원할 수도 있습니다사람이 읽을 수 있는 형식으로 변환).
cat /proc/$pid/stat | awk '
BEGIN {
"getconf CLK_TCK" | getline ticks;
while (!btime) {
getline <"/proc/stat";
if ($1 == "btime") btime = $2;
}
}
{ print "pid=" $1, "start_time=" int($22 / ticks + btime) }'
SSH_CLIENT
프로세스 환경의 변수를 보면 클라이언트의 IP 주소와 포트를 찾을 수 있습니다. 대부분의 Unix 변종에는 이를 수행하는 방법이 있지만 POSIX는 아직 이를 표준화하지 않았습니다. Linux에서는 다음을 사용할 수 있습니다.
</proc/$pid/environ grep -z '^SSH_CLIENT='
설치가 어떤 디렉토리에 있는지 알 수 없다고 생각합니다. SSHFS 클라이언트는 액세스하려는 각 파일에 대한 정보를 보냅니다.
이 모든 데이터를 수집할 수 있는 프로그램은 없지만, 자주 수행하는 것은 아니기 때문에 아마도 제가 모르는 프로그램이 있을 것입니다.
답변2
~ % mount -l -t fuse.sshfs
i@somewhere:/mnt/x on /mnt/x type fuse.sshfs (ro,nosuid,nodev,relatime,user_id=1000,group_id=100)
~ % mount --version
mount from util-linux 2.36.2 (libmount 2.36.2: btrfs, namespaces, assert, debug)
아마도 mount -l -t fuse.sshfs
그것은 당신에게 필요한 것일 수도 있습니다.