跳板机必须禁用密码登录,仅启用密钥认证;需配置passwordauthentication no、permitrootlogin no,严格限制ssh端口、ip访问及服务暴露,并确保内网服务器信任跳板机专用密钥而非用户本地密钥。

跳板机必须禁用密码登录,只留密钥认证
密码登录是暴力破解的主入口,哪怕设置了强密码,在公网暴露下也扛不住自动化扫描。跳板机一旦被拿下,整个内网就等于敞开了门。
关键操作只有三步:
- 编辑
/etc/ssh/sshd_config,确认以下两行已设置且未被注释:PasswordAuthentication noPermitRootLogin no - 确保目标用户(如
jumpuser)的~/.ssh/authorized_keys中已写入客户端公钥,且该文件权限为600,目录为700 - 重启服务:
systemctl restart sshd,并立即从另一终端验证能否用私钥登录——别等锁死自己
常见错误:改完配置忘记 reload 或 restart,或者 authorized_keys 权限过大(比如 644),OpenSSH 会直接拒读,日志里报 Authentication refused: bad ownership or modes。
用 ProxyJump 实现本地直连目标服务器,避免手动跳转
你不需要先 ssh 到跳板机、再 ssh 到内网机器。现代 OpenSSH(7.3+)原生支持 -J 参数,一条命令穿透到底。
前提是你已在本地配好两对密钥:一对用于登录跳板机,一对(或复用)用于登录目标机,并都写入了 ~/.ssh/config:
Host jump
HostName 192.168.1.100
User jumpuser
IdentityFile ~/.ssh/jump_key
Host app-server
HostName 10.0.0.10
User appuser
IdentityFile ~/.ssh/app_key
ProxyJump jump
之后执行:ssh app-server,就自动走跳板机中转,全程无交互。
注意点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 如果 SSH 版本低于 7.3,
-J不可用,得退回到ProxyCommand写法:ProxyCommand ssh -W %h:%p jump -
ProxyJump不转发 agent,默认不支持“跳板机上再连第三台机器”。需要 agent 转发时,加ForwardAgent yes到跳板机 Host 段,但务必评估风险——私钥可能被跳板机窃取
跳板机本身要最小化暴露,防火墙和端口策略不能省
跳板机不是普通服务器,它是唯一对外的 SSH 入口,所有加固动作都要围绕“收缩面”展开。
必须做的几件事:
- 用
firewalld或iptables限制仅允许特定来源 IP 访问 SSH 端口,例如:firewall-cmd --add-rich-rule='rule family="ipv4" source address="203.0.113.50" port port="2222" protocol="tcp" accept' - 修改默认端口(如设为
2222),并在/etc/ssh/sshd_config中取消注释Port 2222;同时云平台安全组也要同步放行新端口 - 禁用 IPv6 监听(除非真需要),在
sshd_config中设AddressFamily inet,避免因 IPv6 配置疏漏导致监听面扩大 - 删掉所有非必要用户和 shell(如
ftp、sync),/etc/passwd里只保留系统账户和跳板专用用户
容易忽略的一点:跳板机上不要装 docker、nginx 等额外服务。越干净,攻击面越小,日志越纯粹。
内网服务器必须信任跳板机密钥,而不是用户本地密钥
目标服务器(如数据库、应用节点)**不该**存你本地电脑的公钥,而应只存跳板机上对应用户的公钥。这是权限收敛的关键设计。
操作流程固定为:
- 在跳板机上生成专用密钥:
ssh-keygen -t ed25519 -f ~/.ssh/bastion_id(推荐 ed25519,比 RSA 更快更安全) - 把
~/.ssh/bastion_id.pub的内容追加进每台内网服务器的appuser@10.0.0.10:~/.ssh/authorized_keys - 测试连通性:
ssh -i ~/.ssh/bastion_id appuser@10.0.0.10(在跳板机上执行)
这样做的好处是:一旦跳板机失陷,你只需吊销这一对密钥,就能切断它对所有内网机器的访问,无需逐台清理用户本地密钥。而如果你把几百台机器的 authorized_keys 都塞进了自己的公钥,轮换成本就是灾难级的。
最后提醒一句:跳板机上的私钥文件(bastion_id)权限必须是 600,且不能设置密码保护——否则 ProxyJump 自动中转会卡住,要求交互输密码,彻底失去“一键直达”的意义。










