Yanıtlar:
Evet, sadece /bin/false
kabuk olarak kullanın ve kullanıcıdan herhangi bir uzak komut çalıştırmadan tünelleme SSH işlemini başlatmasını isteyin (örn. -N
OpenSSH bayrağı):
ssh -N -L 1234:target-host:5678 ssh-host
/bin/false
kabuğunuz varsa, her giriş oturumu derhal sona ereceği için, kabuk erişiminiz olmayacak.
Kullanıcının .ssh / approved_keys dosyasına, aşağıdakine benzer bir şey koyun:
permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...
Yani, temelde, kontroller kullanıcının boşluk bırakarak kullanıcının açık anahtarının önünde olacaktı. Örnekte, belirli ortak anahtarı kullanan bağlantıların yalnızca 192.168.1.10 MySQL sunucusuna ve 10.0.0.16 web sunucusuna SSH bağlantı noktası iletmesine izin verilecek ve bir kabuk atanmamış (pty). Özellikle "pty no" seçeneği hakkında soru soruyorsun, ancak kullanıcının yalnızca belirli sunuculara tünel yapması gerekiyorsa diğerleri de yararlı olabilir.
Yetkili_keys dosyası için daha fazla seçenek için sshd man sayfasına bakın .
Kullanıcı deneyiminin biraz tuhaf görünebileceğini unutmayın: ssh girdiklerinde, oturum asılı gibi görünecektir (bir çörek almadıkları için). Bu iyi. Kullanıcı, örneğin, "-L3306: 192.168.1.10: 3306" ile bağlantı noktası iletmeyi belirlediyse, bağlantı noktası iletme işlemi hala geçerli olacaktır.
Her durumda, bir deneyin.
no-pty
Kabuk erişimini engellemez, sadece kabuğa bir miktar vermez. Bilgi istemini görüntülemiyor (yani "asılı görünüyor"), ancak yine de komutları verebilirsiniz. Oradan kabuk erişimini kısıtlamak istiyorsanız bu command="..."
seçeneğe ihtiyacınız .ssh/authorized_keys
var.
Kullanıcıya, yalnızca çıkış yapmalarına izin veren bir kabuk verin. /bin/press_to_exit.sh
#! / Bin / bash read -n 1 -p "Çıkmak için herhangi bir tuşa basın" tuşu
Bu şekilde, tünelleri aktif halde çalıştığı halde istediği süre boyunca giriş yapabilir, ancak komutları çalıştıramaz. Ctrl-c
bağlantıyı kapatır.
Kullanıcının oturum açmasına izin vermeyen bir kabuk atayın.
Örneğin
#!/bin/sh
echo "No interactive login available."
sleep 60
exit 0
bir kabuk istemi almalarını engeller ve 60 saniyelik bir zaman aşımı süresi sağlar - 60 saniye boyunca aktif bir bağlantı yoksa o zaman çıkar ve böylece tamamen çıkarır (gereksinimlere göre sayısını artırır).
Uzak bir komutu da yürütemezler, çünkü o kabuk onlara izin vermez.
logout
normalde " " ile aynı etkiye sahip olacaktır .
/sbin/nologin
kullanıcı dostu bir mesajla özelleştirebileceğiniz zaten var /etc/nologin.txt
.
Benim çözümüm, sadece tünel olabilir kullanıcıyı sağlamaktır interaktif kabuk olmadan o kabuğun ayarlanması için, / etc / passwd için / usr / bin / tunnel_shell .
Sadece yürütülebilir dosya oluşturmak / usr / bin / tunnel_shell bir ile sonsuz döngüye .
Ek olarak AllowGroups
ve Match Group
seçeneğinden yararlanın.
Tam burada açıklanmıştır: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
-N
, kabuk erişimine sahiptir. Bu gerçekten sorunu çözmez ve tehlikelidir.