Saya baru saja SSH menjadi root, dan kemudian SSH lagi menjadi root pada mesin yang sama. Jadi saya punya dua jendela yang membuka kedua SSH menjadi root pada mesin remote saya.
Dari shell, bagaimana saya bisa melihat daftar dua sesi ini?
who
atau w
; who -a
untuk informasi tambahan.
Perintah-perintah ini hanya menunjukkan semua sesi login pada perangkat terminal. Sesi SSH akan berada pada slave pseudo-terminal ( pts
) seperti yang ditunjukkan pada TTY
kolom, tetapi tidak semua koneksi Poin adalah sesi SSH. Misalnya, program yang membuat perangkat terminal semu seperti xterm
atau screen
akan ditampilkan sebagai pts
. Lihat Perbedaan antara Poin dan tty untuk deskripsi yang lebih baik dari nilai yang berbeda yang ditemukan di TTY
kolom. Selain itu, pendekatan ini tidak akan menunjukkan siapa pun yang masuk ke sesi SFTP, karena sesi SFTP bukan sesi masuk shell.
Saya tidak tahu cara untuk secara eksplisit menunjukkan semua sesi SSH. Anda dapat menyimpulkan informasi ini dengan membaca informasi masuk dari utmp
/ wtmp
melalui alat seperti last
,, w
atau who
seperti yang baru saja saya jelaskan, atau dengan menggunakan alat jaringan seperti @sebelk yang dijelaskan dalam jawaban mereka untuk menemukan koneksi tcp terbuka pada port 22 (atau di mana pun SSH Anda daemon sedang mendengarkan.
Pendekatan ketiga yang bisa Anda ambil adalah mengurai output log dari daemon SSH. Bergantung pada distribusi OS Anda, distribusi SSH, konfigurasi, dan sebagainya, output log Anda mungkin ada di sejumlah tempat berbeda. Pada kotak RHEL 6, saya menemukan log /var/log/sshd.log
. Pada kotak RHEL 7, dan juga pada kotak Arch Linux, saya perlu menggunakan journalctl -u sshd
untuk melihat log. Beberapa sistem mungkin menampilkan log SSH ke syslog. Log Anda mungkin ada di tempat-tempat ini atau di tempat lain. Berikut contoh apa yang mungkin Anda lihat:
[myhost ~]% cat /var/log/sshd.log | grep hendrenj | 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
Log menunjukkan kapan sesi dibuka dan ditutup, dari siapa sesi itu berasal, dari mana pengguna terhubung, dan banyak lagi. Namun, Anda harus melakukan banyak penguraian jika Anda ingin mendapatkan ini dari log peristiwa sederhana yang dapat dibaca manusia ke daftar sesi aktif saat ini, dan itu masih mungkin tidak akan menjadi daftar yang akurat ketika Anda sudah selesai melakukan parsing, karena log sebenarnya tidak mengandung informasi yang cukup untuk menentukan sesi mana yang masih aktif - Anda pada dasarnya hanya menebak. Satu-satunya keuntungan yang Anda peroleh dengan menggunakan log ini adalah bahwa informasi tersebut datang langsung dari SSHD daripada melalui sumber bekas seperti metode lainnya.
Saya sarankan hanya menggunakan w
. Sebagian besar waktu, ini akan memberi Anda informasi yang Anda inginkan.
who -a
perintahAnda dapat melihat setiap sesi ssh dengan perintah berikut:
O mungkin ini mungkin berguna:
sumber
pgrep -ai sshd
pgrep: invalid option -- 'i'
di Ubuntu 14.04.-i
hanya tersedia untuk citarasa mac / bsd. di ubuntu bisa Anda gunakanpgrep -af ssd
. Lihat serverfault.com/a/883270/116777 untuk detailAnda juga bisa menggunakan
sumber
Ditambahkan untuk referensi sederhana.
Jika Anda menggunakan shell semu (contoh: / dev / pts / 0) salah satu cara paling sederhana adalah:
Seharusnya kembali: ip dan port Anda dan ip Anda terhubung ke dan port
Anda juga dapat memperoleh beberapa informasi dari menggunakan
tty
atauwho
(w
): (edit: Saya melihat sekarang daftar di atas di pos lain)sumber
SECONDS
global. Anda dapat menggunakan ini viaecho $SECONDS
, yang kemudian menampilkan jumlah waktu, sejak koneksi yang dirasakanMemperluas jawaban @ sebelk:
Solusi yang digunakan
netstat
adalah solusi yang bagus tetapi membutuhkan hak akses root. Selain itu,net-tools
paket (yang menyediakannetstat
) sudah tidak digunakan lagi di beberapa distro Linux yang lebih baru ( https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/ ).Sebuah solusi alternatif adalah kemudian untuk menggunakan pengganti
netstat
,ss
. Misalnya (perhatikan bahwa Anda tidak lagi memerlukan root):sumber
Anda dapat gunakan
Saya menggunakan ini dalam skrip .login saya selama bertahun-tahun untuk melihat siapa yang baru saja masuk ke sistem. Itu adalah perangkat keamanan yang buruk untuk melihat apakah seseorang berada di sistem menggunakan login Anda.
sumber
last
mungkin tidak terdaftar.last
dukungan apa-p
? Apa fungsinya?"last from util-linux 2.31.1"
sudah pasti.