Bunu "ne sorduğunuzu belirsiz" olarak kapatmak için bir oylama yapıldı. Görünüşe göre titiz olmak iyi bir şey değil, o yüzden kısa ve öz olacağım:
Uzak bir ana bilgisayara SSH yaptığınız zaman: bir programı doğrudan kullanıcının varsayılan kabuğu altında yürütmek yerine doğrudan çalıştırmak mümkündür.
- ağ hava boşluklu
- ağdaki herkes her makineye kabuk erişimine sahiptir
- BT, bu değişikliklerin birinin kök kabuğu alma riskini arttırmaması koşuluyla, ne yapılması gerekiyorsa yapabilir (zaten mümkün olanın ötesinde).
- Bunun gibi bir şeyin mümkün olduğunun kanıtı olarak:
sftp
ssh "alt sistemi", kullanıcının varsayılan kabuğunu çalıştırmadan yürütebilir,scp
alt sistemi hala kullanır.- Bir alt sistemi uygulamaya çalıştım, ancak yine de kullanıcının varsayılan kabuğu altında yürütüldü.
Bu soruna iyi bir çözüm olduğunu düşünmüyorum (çok sayıda insan olmayan * insanı yıllarca eğittikleri koltuk değneği bırakmaya ikna etmek yerine), ancak soruyu ortaya koyacağımı düşündüm. orada umut ediyorum yanıldım.
Aşağıda daha kısa özlü soru.
Ofisimde hepsi garip ve tuhaf yapılandırmalar kullanan çok sayıda insan (3-500 +) var. Yazdığımız yazılımın belirli bir kullanıcı için nasıl davranacağını tahmin etmek çok zordur, çünkü ortamları beklentilerimizi tamamen ihlal edebilir.
Bu sorunu gidermek için yapımızı kullanıcının ortamını soyunacak şekilde değiştirdim, böylece yapıyı etkileyemedi ve bu stratejinin başarısına dayanarak yazılımımızın çalışmasını aynı şeyi yapan bir kabuk betiğine sardık.
Ne yazık ki, başlatıcı hala kullanıcının ortamından etkilenebilir. Uzaktan çalıştırıldığında, kullanıcının .cshrc
/ .login
tipik olarak başlatıcının çalışmaya başlamadan önce uzun gecikmelere neden olan bir hurdalığı vardır.
Normalde "saçmalıklarını düzelt" demeye meyilli olurdum, ama * nix meraklısı insanlardan bahsetmiyoruz; bu, yıllarca dayandıkları bir koltuk değneğidir ve yapılandırma sorunları nedeniyle yazılımımızı suçlamaya devam etme eğilimindedirler.
Kısacası, goofy ortam komut dosyalarını tamamen kısa devre yaptırmanın bir yolunu arıyorum.
Bu durumu simüle etmek için varsayılan kabuğumu tcsh değerine alıp koyuyorum , sonra birkaç test hostname; sleep 10
yaptım .cshrc
:
- sftp yazdırmıyor / uymuyor - bu durumda hedef makine, sftp'nin sshd'ye yerleştirildiği solaris idi ve bir linux kutusuna karşı test etmeyi düşünmedim. Koşu
ptree
sftp bağlantı hizmetinin verilmesi işlemi ağacının karşı bir kabuk altında koşmuyor gösterir. - scp metni yazdırır ve 10 saniye uyur
- uzak ana bilgisayardaki ssh aracılığıyla komut çalıştırmanın her bir çeşidi komutun kullanıcının varsayılan kabuğunun altında çalışmasına neden olur; Denedim:
- Açık - ssh komutunu geç
command=
içinde.ssh/authorized_keys
- Kişisel linux'uma özel bir "alt sistem" yaptım
/etc/ssh/sshd_config
PermitUserEnvironment
SHELL ayarını denemek için makinemde etkin- Hiç işe yaramadı:
SHELL=/bin/bash ssh -o "SendEnv SHELL" localhost
- Tür çalıştı: SHELL ayarlamak için
environment=
veya kullanın~/.ssh/enviornment
- SHELL’in kurulduğuna inanıyordu, ama aslında benim gerçek varsayılan kabuğumun altında çalışıyor.
- Hiç işe yaramadı:
netcat
Mevcut bir ssh seansı üzerinde bir kabuk ilerletmeyi kullandım , ancak bu bir yumurta kırmak için bir kızak kullanmak gibi görünüyor - hem dağınık hem de son derece uygunsuz.
Kuruluşumuzdaki bir kişi, başka bir kullanıcı yapmayı önerdi, ne olursa olsun, herkesin o kullanıcı olarak ssh üzerinden giriş yapabileceğini, ardından :: sallanan el ile çok bulutlu bir balon çözümü: programın orijinal kullanıcı olarak çalışmasını sağlamak için .
Böyle bir şey yapmak konusunda biraz şüpheliyim. Netcat ile bir kabuk iletmek veya geçici olarak yeniden adlandırmak gibi ağır elle ve kırılgan bir şey iletmek kadar kötü olmayabilir .cshrc
, ama yine de düşkün değilim.
Herhangi bir öneriniz açıktır.
.cshrc
ilk önce bir demet saçma yaparsa (bu nedenle sleep 10
) uzun gecikmelere neden olabilir.
~/.ssh/rc
yoksa /etc/ssh/sshrc
?
sleep 10
Gözlerinde farklı .cshrc
ve bu makineye ssha ve yol açmadan bir komut çalıştırmayı denediğinizde .cshrc
içeriği yürütülecek.
ssh -t <host> sh
? Veya hatta bir şey ssh <host> csh -f [<command>]
? (Okuduğum dokümanlar