Ubuntu 11.10'da, bağlantı noktası yönlendirmenin geçmesine izin verirken, -T ile ve -T olmadan gönderilen ssh komutlarını ve scp kopyalamayı engelleyebileceğimi fark ettim.
Spesifik olarak, localhost'a bağlı "bir şekilde" üzerinde bir redis sunucum var: 6379, ssh tünelleri aracılığıyla bir anahtar dosyası olan ve şunlarla ssh yapacak diğer ana bilgisayarlarla güvenli bir şekilde paylaşmak istediğim:
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost
Bu, redis-server, "localhost" bağlantı noktası 6379'un "somehost" üzerinde ssh komutunu yürüten ana bilgisayarda yerel olarak görünmesine ve "localhost" bağlantı noktası 16379'a yeniden eşlenmesine neden olacaktır.
Uzakta "bir şekilde" İşte yetkili_keys için kullandım:
cat .ssh/authorized_keys (portions redacted)
no-pty,no-X11-forwarding,permitopen="localhost:6379",command="/bin/echo do-not-send-commands" ssh-rsa rsa-public-key-code-goes-here keyuser@keyhost
No-pty, bir uçbirim açmak isteyen çoğu ssh denemesini açar.
Permitopen hangi bağlantı noktalarının yönlendirilmesine izin verildiğini açıklar, bu durumda 6379 numaralı bağlantı noktası iletmek istediğim redis sunucu bağlantı noktasıdır.
Command = "/ bin / echo do-not-send-commands", birisi veya başka bir şey ssh -T yoluyla veya başka bir şekilde ana bilgisayara komut göndermeyi başarırsa, "do-not-send-komutlarını" geri yansıtır.
Yeni bir Ubuntu'dan man sshd
, yetkili_keys / komut aşağıdaki gibi açıklanmıştır:
command = "command" Bu anahtar kimlik doğrulama için her kullanıldığında komutun yürütüleceğini belirtir. Kullanıcı tarafından sağlanan komut (varsa) dikkate alınmaz.
Scp güvenli dosya kopyalamayı kullanma girişimleri de bir "gönderme-gönderme-komutları" yankısıyla başarısız olacak, sftp'nin de bu yapılandırmada başarısız olduğunu buldum.
Önceki cevapların bazılarında yapılan kısıtlanmış kabuk önerisinin de iyi bir fikir olduğunu düşünüyorum. Ayrıca, burada ayrıntılı olarak verilen her şeyin "man sshd" okunup "yetkili anahtarlar" aranarak belirlenebileceğini kabul ediyorum.
no-pty
kullanıcı kutu düzenlemek böylece, bu komut yürütme engellemek için hiçbir şey yapmaz interaktif seesion açılmasına izin vermezauthorized_keys
diye böyle bir şey ile erişimi olan dosya varsassh server 'sed -i -e s/no-pty// ~/.ssh/authorized_keys'
.