保护 SSH 隧道

Lup*_*uch 1 ssh shell tunneling

我们有一个使用 SSH 连接到服务器的应用程序:应用程序的网络流量(数据库、一些自定义 TCP 协议等)通过 SSH 连接进行隧道传输。

我们在服务器上使用密钥对和非特权帐户,但用户仍然可以使用他们的密钥登录服务器,或者做任何他们想做的端口重定向。

有没有办法将 SSH 服务器配置为仅允许某些隧道(受隧道的结束地址和端口限制)并禁用 shell 访问?(我们使用 OpenSSH)

[编辑]

我遇到了这篇文章,似乎删除 shell 访问权限还不够。相应地更改了标题和描述。

Zor*_*che 6

在您的authorized_keys 文件中,您可以指定登录时将运行的命令。您可以简单地设置该命令来运行一些将等待很长时间的东西。sshd 手册作为您可以在authorized_keys 文件中使用的所有选项的列表。

permitopen="tsserver.example.org:3389",no-pty,no-agent-forwarding,no-X11-forwarding,command="/usr/local/stm_shell.sh" ssh-rsa AAAAB3....
Run Code Online (Sandbox Code Playgroud)

我的 stm_shell.sh 就是这个(它还强制执行 12 小时超时)。我不是 100% 确定这是否完全安全。

#!/bin/bash

# send a hang-up after this process exits
shopt -s huponexit
# maximum session length in hours
CONNECT_TIME=12
sleep $[CONNECT_TIME*60]
kill $PPID
Run Code Online (Sandbox Code Playgroud)