gpt4 book ai didi

unix - 允许用户设置 SSH 隧道,但仅此而已

转载 作者:行者123 更新时间:2023-12-03 04:56:53 24 4
gpt4 key购买 nike

我想允许用户在特定端口(例如 5000)上设置到特定计算机的 SSH 隧道,但我想尽可能限制该用户。 (身份验证将使用公钥/私钥对)。

我知道我需要编辑相关的 ~/.ssh/authorized_keys 文件,但我不确定要在其中放入什么内容(公钥除外)。

最佳答案

在 Ubuntu 11.10 上,我发现我可以阻止使用或不使用 -T 发送的 ssh 命令,并阻止 scp 复制,同时允许端口转发通过。

具体来说,我在“somehost”上有一个绑定(bind)到 localhost:6379 的 redis 服务器,我希望通过 ssh 隧道安全地共享到具有 key 文件的其他主机,并将通过 ssh 进行连接:

$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost

这将导致 redis 服务器“somehost”上的“localhost”端口 6379 出现在执行 ssh 命令的主机本地,并重新映射到“localhost”端口 16379。

在远程“somehost”上,这是我用于授权 key 的内容:

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 会阻止大多数想要打开终端的 ssh 尝试。

permitopen 解释了允许转发哪些端口,在本例中,端口 6379 是我想要转发的 redis-server 端口。

如果某人或某事确实设法通过 ssh -T 或其他方式向主机发送命令,则 command="/bin/echo do-not-send-commands"会回显“do-not-send-commands”。

从最近的 Ubuntu man sshd 来看,authorized_keys/命令描述如下:

command="command" Specifies that the command is executed whenever this key is used for authentication. The command supplied by the user (if any) is ignored.

尝试使用 scp 安全文件复制也会失败,并出现“不发送命令”的回显,我发现 sftp 使用此配置也会失败。

我认为之前的一些答案中提出的受限 shell 建议也是一个好主意。另外,我同意这里详细说明的所有内容都可以通过阅读“man sshd”并在其中搜索“authorized_keys”来确定

关于unix - 允许用户设置 SSH 隧道,但仅此而已,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com