sshİçinde kullandığım tüm uzak komutların yerel, zaman damgalı kaydını nasıl tutabilirim (komut satırı openssh istemcisi başladı bash)?
Gereksinimler:
esansiyel:
- Sunucu günlüğüne güvenmeden% 100 istemci tarafı
- Kullanıcının ana dizininde depolanan günlüklerle kullanıcı başına yapılandırılmış veya yüklenmiş.
- Çeşitli kullanıcılar ve ana bilgisayarlarla aynı anda birden çok oturum arasında ayrım yapma desteği.
- Müdahaleci olmayan (her seferinde etkinleştirmeye gerek yoktur ve ssh kullanımına önemli ölçüde müdahale etmez)
Yüksek öncelik:
- Çıktılar mümkün olduğunca günlüğe kaydedilmez veya filtrelenmez
- Parola girişleri günlüğe kaydedilmez veya dosya şifrelenir
- Kullanılan gerçek komutları gösterir (sekme / geçmiş tamamlama, geri boşluklar, CTRL+ C, vb. İşlendikten sonra )
Olması güzel:
- Ayrıca zincirleme oturumlardaki komutları günlüğe kaydeder (uzak
sshveyasu <user>oturumlar sırasında girilen komutlar ) - Oturum başlangıcı ve bitişi günlüğe yazılmalıdır
- Basit
bashtabanlı, kök olmayan bir çözüm en iyisidir (belki de komut için biraliasveyabashsarıcı komut dosyasıssh?)
- Ayrıca zincirleme oturumlardaki komutları günlüğe kaydeder (uzak
Beceri seviyem:
- Programlamaya yeni değilim, ama hala öğreniyorum
bashve "Linux yolu", bu yüzden kısa açıklamalar ile kod örnekleri çok takdir edilecektir.
Olası stratejiler
- keylogger - Sorun: şifreleri günlüğe kaydeder, sekmeyi / geçmiş tamamlamayı günlüğe kaydetmez ( glenn'in cevabına bakın )
screensaniyede bir kez vediffyeni kaydırma çizgileri bulmak için aralarında boşaltma boşaltma ile - Sorun: Bu yararlı bir otomatik şekilde nasıl uygulanabilir?ssh "$@" | tee >(some_cleaner_function >> $logfile)- Sorun: Zincirli oturumlarda çok satırlı komutları veya geçmişi işleyemiyor, dikkatli bir şekilde temizlenmesi gerekiyor (cevabıma bakın)- Yukarıdakilerin bazılarının kombinasyonu
Bir örnek
Aşağıdaki SSH oturumu:
user@local:~$ ssh user@remote
Last login: Tue Jun 17 16:34:23 2014 from local
user@remote:~$ cd test
user@remote:~/test$ ls
a b
user@remote:~/test$ exit
Aşağıdaki ~/logs/ssh.loggibi bir günlüğe neden olabilir :
2014-06-17 16:34:50 [user@remote - start]
2014-06-17 16:34:51 [user@remote] cd test
2014-06-17 16:34:52 [user@remote] ls
2014-06-17 16:34:53 [user@remote] exit
2014-06-17 16:34:53 [user@remote - end]
Veya, her oturum için dosyanın üst kısmında oturumu başlatmak için kullanılan komut satırı ile ayrı bir günlük oluşturulur.