Saya mencari cara untuk menjalankan SSH (khususnya OpenSSH, tetapi tidak harus) dan mencatat semua perintah yang saya jalankan terhadap remote, ke file secara lokal.
Menjalankan setiap perintah sebagai perintah ssh independen memang akan mencatat setiap perintah ke riwayat lokal saya, tetapi umumnya tidak diinginkan untuk menjalankan mis.
ssh [email protected] -- foo -a --bar baz
untuk setiap perintah.
Saya lebih suka ssh ke server dengan cara biasa, baik melalui ssh sendiri, atau melalui perintah wrapper, seperti 'ssh-logging'.
Saya membayangkan input perintah program yang disimpan melalui ssh ke dalam file di mesin klien lokal sebanding dengan bagaimana shell melakukannya, misalnya ~ / .ssh_history tampaknya seperti default yang baik, mungkin diijinkan per kombinasi pengguna + host, tapi saya tidak sangat peduli di mana ia menyimpan saat ini.
Singkatnya, saya ingin sesuatu seperti yang berikut terjadi:
~ $ ssh [email protected]
[user@host ~]$ foo --bar
[user@host ~]$ exit
~ $ cat .ssh_history_user@host
foo --bar
exit
~ $
Apakah hal semacam itu ada, baik sebagai konfigurasi klien OpenSSH yang tidak jelas, atau sebagai bagian dari klien open-source / libre ssh lainnya, atau sebagai program pembungkus tipis yang dapat dengan mudah menempatkan diri pada input stdin pengguna, dan mengirim secara transparan mereka ke stdin dari program yang sedang berjalan saat login mereka? (Saya dengar SecureCRT memiliki fitur pencatatan yang mungkin kira-kira seperti ini, tetapi setidaknya dalam kehidupan pribadi saya, saya tidak memiliki keinginan untuk menggunakan alat-alat non-FLOSS).
sumber
ssh user@host | tee ssh.log
?Jawaban:
Jika Anda menggunakan unix, utilitas standar
script
dirancang untuk tujuan ini. Jika Anda menjalankanscript
tanpa argumen, itu memulai salinan shell Anda dan mencatat sesi ke file bernama "naskah":Anda dapat menentukan file untuk login dan perintah untuk menjalankan bukan shell. Bagian ini tidak sepenuhnya standar. Di sistem OSX saya, Anda akan menjalankannya seperti ini:
Dengan versi linux yang umum, Anda akan menjalankannya seperti ini:
sumber
script
, meskipun tidak selalu menghasilkan file portabel (misalnya saya telah melihat masalah antara GNU dan BusyBox yangscript
saling mengatur waktu masing-masing. file), pada dasarnya adalah jawaban terbaik dan paling tepat yang akan didapat pertanyaan ini, jadi saya telah melanjutkan dan menerima jawaban ini juga.Berkat komentar Eugen Rieck tentang pemipaan ssh melalui tee, saya dapat menerapkan pembungkus logging di sekitar ssh yang melakukan apa yang saya cari.
sumber