首页 / 知识
关于unix:允许用户设置SSH隧道,但无其他设置
2023-04-12 00:37:00

Allow user to set up an SSH tunnel, but nothing else我想允许用户在特定端口(例如5000)上建立到特定计算机的SSH隧道,但是我想尽可能地限制该用户。 (身份验证将使用公共/专用密钥对)。 我知道我需要编辑相关的?/ .ssh / authorized_keys文件,但是我不确定到底要放什么内容(除了公钥)。 在Ubuntu 11.10上,我发现我可以阻止ssh命令(使用-T和不使用-T发送),并阻止scp复制,同时允许端口转发通过。 具体来说,我在绑定到localhost:6379的" somehost"上有一个redis服务器,希望通过ssh隧道安全地共享到其他具有密钥文件的主机,并将通过ssh进行共享:
这将导致redis服务器" somehost"上的" localhost"端口6379在执行ssh命令的主机上本地显示,并重新映射到" localhost"端口16379。 在远程" somehost"上,这是我用于authorized_keys的内容:
no-pty会触发大多数想要打开终端的ssh尝试。 permitopen解释了允许转发哪些端口,在这种情况下,端口6379是我要转发的redis服务器端口。 如果某人或某物确实设法通过ssh -T或其他方式向主机发送命令,则command =" / bin / echo do-not-send-commands"回显" do-not-send-commands"。
在最近的Ubuntu
尝试使用scp安全文件复制也将失败,并回显" do-not-send-commands"。我发现sftp在此配置下也失败。
我认为在先前的一些回答中提出的限制性外壳建议也是一个好主意。
您可能需要将用户的外壳设置为受限外壳。在用户的?/ .bashrc或?/ .bash_profile中取消设置PATH变量,他们将无法执行任何命令。稍后,如果您决定要允许用户执行一组有限的命令,例如 除了诸如no-X11-forwarding之类的authorized_keys选项外,实际上您还要求提供一个:allowopen =" host:port"。通过使用此选项,用户只能建立到指定主机和端口的隧道。 有关AUTHORIZED_KEYS文件格式的详细信息,请参考man sshd。 我的解决方案是为仅提供隧道服务的用户(而不提供交互式shell)将/ etc / passwd中的该shell设置为/ usr / bin / tunnel_shell。 只需使用无限循环创建可执行文件/ usr / bin / tunnel_shell。
此处有完整说明:http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
在这里,我有一篇不错的文章,对我很有帮助: 这个想法是:(使用新的受限用户名为" sshtunnel")
请注意,我们使用rbash(受限bash)来限制用户可以执行的操作:用户不能cd(更改目录)并且不能设置任何环境变量。
然后,我们将
最后,我们通过设置以下权限禁止用户编辑任何文件:
如果要只允许访问特定命令(例如svn),则还可以在授权密钥文件中指定该命令:
来自http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks
您可能希望您的authorized_keys文件中的一行如下所示。
我做了一个C程序,看起来像这样:
我将受限用户的外壳程序设置为此程序。
我认为受限制的用户即使执行 请参阅有关验证公钥的文章。 您需要记住的两件事是: 您将通过用户使用的任何ssh客户端在用户计算机上生成密钥。例如,pUTTY具有实用程序来执行此操作。它将生成私钥和公钥。 生成的公共密钥文件的内容将放置在authorized_keys文件中。 接下来,您需要确保将ssh客户端配置为使用生成公钥的私钥。这是相当简单的,但是根据所使用的客户端而略有不同。 |
最新内容
相关内容
python如何获取用户输入
python如何获取用户输入,培训,字符串,整数,类型,文本,文档,用户,小数点,位数,以上,python整数输入#!/usr/bin/python3usr_ip=input("Enteran关于xaml:WPF:如何设置或禁用文本框
关于xaml:WPF:如何设置或禁用文本框的默认ContextMenu,关于xaml:WPF:如何设置或禁用文本框的默认ContextMenu,用户,应用程序,单击,鼠标VB.NET专用字段的命名约定
VB.NET专用字段的命名约定,VB.NET专用字段的命名约定,字段,属性,约定,私有,Naming convention for VB.NET private fields在VB.NET中设置与SVN的持续集成
设置与SVN的持续集成,设置与SVN的持续集成,设置,工具,网站,控制,Setting up Continuous Integration with SVN您将推荐使用哪些工具关于身份验证:我应该使用用户名还是
关于身份验证:我应该使用用户名还是用户ID来引用ASP.NET中经过身份验证的用户,关于身份验证:我应该使用用户名还是用户ID来引用ASP.N在Windows上进行Mono开发的最佳设
在Windows上进行Mono开发的最佳设置是什么?,在Windows上进行Mono开发的最佳设置是什么?,插件,尝试,转换为,一起玩,What's the best se内置用户配置文件与旧式用户类/表
内置用户配置文件与旧式用户类/表的ASP.NET,内置用户配置文件与旧式用户类/表的ASP.NET,最佳实践,配置文件,应将,寻找,ASP.NET built如何使用纯HTTP身份验证和PHP在Apa
如何使用纯HTTP身份验证和PHP在Apache下获取经过身份验证的用户名?,如何使用纯HTTP身份验证和PHP在Apache下获取经过身份验证的用户关于sql server:由多个用户编辑数据
关于sql server:由多个用户编辑数据库记录,关于sql server:由多个用户编辑数据库记录,服务,应用程序,规范化,用户,Editing database re.val将函数作为参数设置文本框的值
.val将函数作为参数设置文本框的值,.val,将,函数,作为,参数,设置,文本,框,的,值,, .val( value ) .val( value )返回: jQ.height(value)设置div高度为30px
.height(value)设置div高度为30px,.height,value,设置,div,高度,为,30px,.height,value,, .height(value) 描述: 设置每关于html:确定用户的时区
关于html:确定用户的时区,关于html:确定用户的时区,字符串,方法,网页,服务器,Determine a user's timezone
Web服务器是否有一种标准