本教程介绍如何配置一个SSH跳板机(堡垒机),允许特定用户(
jumpuser
)通过跳板机转发连接到内网机器,同时禁止直接登录或在跳板机上执行命令。配置设计简洁、安全且易于维护。此外,还包括如何将特定内网主机名(如xxx.intranet
)绑定到特定IP地址的步骤。
前提条件
- 一台安装了SSH服务器(
sshd
)的Linux跳板机。 - 跳板机的管理员权限。
- 客户端机器上安装了SSH客户端。
在跳板机上创建并配置 jumpuser
在跳板机上创建专用用户 jumpuser
,并限制其直接登录权限。
sudo useradd -m jumpuser -s /usr/sbin/nologin
-m
:为jumpuser
创建家目录。-s /usr/sbin/nologin
:将用户shell设置为nologin
,阻止shell登录。
这确保 jumpuser
无法直接登录或在跳板机上执行命令。
配置SSH服务器(sshd_config
)
修改跳板机的SSH服务器配置文件(/etc/ssh/sshd_config
),为 jumpuser
设置限制并启用端口转发。
在 /etc/ssh/sshd_config
文件末尾添加以下 Match User
配置块:
Match User jumpuser
ForceCommand echo '此账户仅用于跳板机,无法直接登录。'; exit 1
PermitTTY no
AllowTcpForwarding yes
PermitOpen any
X11Forwarding no
配置说明
指令 | 作用 |
---|---|
ForceCommand |
执行固定命令(显示提示并退出),阻止其他命令执行。 |
PermitTTY no |
禁用TTY分配,防止交互式会话。 |
AllowTcpForwarding yes |
启用SSH端口转发,允许 jumpuser 使用跳板机作为代理。 |
PermitOpen any |
允许转发到任意内网主机和端口(默认受限)。 |
X11Forwarding no |
禁用X11图形转发,增强安全性。 |
更新配置后,重启SSH服务:
sudo systemctl restart sshd
绑定内网主机名到特定IP
为了将特定内网主机名(例如 xxx.intranet
)绑定到特定IP地址(如 10.0.0.10
),在跳板机上修改 /etc/hosts
文件。
编辑
/etc/hosts
文件:sudo vi /etc/hosts
添加以下行,将主机名绑定到IP地址:
10.0.0.10 xxx.intranet
保存文件并退出。
验证绑定是否生效:
ping xxx.intranet
确保返回的IP地址为
10.0.0.10
。
注意:此配置仅在跳板机上生效。如果内网其他机器需要解析 xxx.intranet
,需要在每台机器的 /etc/hosts
文件中添加类似条目,或使用内网DNS服务器统一管理。
配置客户端SSH
在客户端机器上,配置 ~/.ssh/config
以简化通过跳板机访问内网主机。
在 ~/.ssh/config
中添加以下内容:
Host *.intranet
ProxyJump jumpuser@jump.example.com
Host *.intranet
:适用于任何以.intranet
结尾的主机名(如xxx.intranet
)。ProxyJump
:指定跳板机(jumpuser@jump.example.com
)用于转发。
或者直接使用命令行:
ssh -J jumpuser@jump.example.com xxx.intranet
-J
:指定跳板机用于SSH转发。
预期效果
操作 | 结果 |
---|---|
ssh jumpuser@jump.example.com |
❌ 拒绝(显示提示并退出) |
ssh -J jumpuser@jump.example.com xxx.intranet |
✅ 允许(连接到 10.0.0.10 ) |
ssh -J jumpuser@jump.example.com 10.0.0.10 |
✅ 允许(连接到内网主机) |
安全性增强建议
为进一步提高跳板机安全性,建议以下措施:
禁用密码认证
在/etc/ssh/sshd_config
中添加以下内容,强制使用密钥认证:PasswordAuthentication no
这将禁用密码登录,增强安全性。
使用Fail2Ban或防火墙
使用fail2ban
或防火墙(如iptables
、ufw
)阻止暴力破解攻击。限制跳板机访问
通过防火墙规则或sshd_config
中的AllowUsers
或ListenAddress
限制特定IP范围的SSH访问。监控日志
定期检查SSH日志(/var/log/auth.log
或/var/log/secure
),以发现可疑活动。
总结
本配置提供了一个安全、简洁且易于维护的SSH跳板机解决方案。jumpuser
账户被限制无法直接登录,同时允许无缝转发到内网主机,包括通过主机名(如 xxx.intranet
)访问特定IP地址。通过实施安全性增强措施,可进一步保护跳板机免受未经授权的访问。