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
ssh
veyasu <user>
oturumlar sırasında girilen komutlar ) - Oturum başlangıcı ve bitişi günlüğe yazılmalıdır
- Basit
bash
tabanlı, kök olmayan bir çözüm en iyisidir (belki de komut için biralias
veyabash
sarıcı komut dosyasıssh
?)
- Ayrıca zincirleme oturumlardaki komutları günlüğe kaydeder (uzak
Beceri seviyem:
- Programlamaya yeni değilim, ama hala öğreniyorum
bash
ve "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 )
screen
saniyede bir kez vediff
yeni 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.log
gibi 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.