如何让指定的ssh用户仅支持转发指定端口

首先确保sshd服务支持/etc/ssh/sshd_config.d/目录。检查方法,打如下命令:

cat /etc/ssh/sshd_config|grep sshd_config.d

如果输出如下内容,表示支持使用子配置文件方式:

Include /etc/ssh/sshd_config.d/*.conf

此时可建立文件/etc/ssh/sshd_config.d/1-allow-port-forward-user.conf,然后输入限制配置;如果不支持,则直接修改/etc/ssh/sshd_config文件,增添限制配置内容。

限制配置内容如下:

Match User <替换成你的用户名>
  PermitOpen <替换成你要限制转发的IP和端口>
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /sbin/nologin

以下例子表示限制用户abc只允许转发127.0.0.1的3306端口

Match User abc
  PermitOpen 127.0.0.1:3306
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /sbin/nologin

最后重启sshd服务

systemctl restart sshd

客户端测试转发:

ssh -L <ssh客户端机器端口>:<服务器要转发访问的ip>:<服务器要转发访问的端口> <用户名>@<服务器ip> -p <服务器ssh端口> -N

例子:

ssh -L 13306:127.0.0.1:3306 abc@192.168.1.100 -p 22 -N

输入密码成功后可在本机使用13306端口,让远程服务器访问到远程服务器所在的127.0.0.1的3306端口。

如果服务器开启了两部验证2FA,有可能部分程序因为不支持2FA验证码输入而失效。此时需要对限制用户解除2FA验证。具体方法见:如何禁止某些用户ssh登录时候使用双因素验证 – Orz小窍门 (orztip.com)

本页永久链接:https://www.orztip.com/?p=818&article_title=restrict-ssh-port-forward-by-user