新闻资讯
领先云端方案商,专注云桌面、云手机研发,凭核心虚拟化技术与云端算力,打造安全高效数字化平台,提供全周期支持。
分类
相关文章
热门标签

入门教学跳板机怎样搭建图解视频使用SCP与端口转发实例

2026年10月20日

1. 前置条件与准备工作

1) 一台公网可访问的服务器作为跳板机(Ubuntu 22.04 示例),一台位于私网的目标主机(内网 IP 如 10.0.0.5)。2) 本地开发机器安装 OpenSSH 客户端(linux/mac 自带,Windows 建议使用 Git Bash 或 OpenSSH)。3) 有 sudo 权限的账号用于在跳板机上安装配置。

2. 生成 SSH 密钥并分发公钥

1) 在本地执行:ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_bastion -C "bastion-key",不设置口令或根据需求设置。2) 将公钥复制到跳板机:ssh-copy-id -i ~/.ssh/id_ed25519_bastion.pub jumpuser@bastion.example.com(或手动追加到 /home/jumpuser/.ssh/authorized_keys)。3) 同样将公钥也加入内网目标主机的 authorized_keys(若不能直接访问,可先在跳板机上再复制)。

3. 基本 SSHD 安全配置(在跳板机上)

1) 编辑 /etc/ssh/sshd_config:设置 PermitRootLogin no、PasswordAuthentication no(启用 key auth 后禁用密码)、AllowUsers jumpuser。2) 可修改默认端口 Port 2222(非必须,但降低被扫描概率)。3) 重启服务:sudo systemctl restart sshd。注意:修改端口前确保防火墙允许新端口。

4. 防火墙配置示例(使用 UFW)

1) 安装并启用:sudo apt install ufw; sudo ufw default deny incoming; sudo ufw default allow outgoing。2) 允许 SSH(如果改端口为2222):sudo ufw allow 2222/tcp。3) 若需仅允许特定管理 IP:sudo ufw allow from 1.2.3.4 to any port 2222 proto tcp。4) 启用:sudo ufw enable。

5. 配置 ~/.ssh/config 以便简化连接(本地)

1) 在本地编辑 ~/.ssh/config,添加:

Host bastion HostName bastion.example.com User jumpuser Port 2222 IdentityFile ~/.ssh/id_ed25519_bastion

Host internal HostName 10.0.0.5 User internaluser ProxyJump bastion IdentityFile ~/.ssh/id_ed25519_bastion

2) 保存后可直接 ssh internal 免去每次写 -J 或 IP。

6. 使用 SCP 通过跳板机传文件的实例

1) 直接使用 ProxyJump(单行命令):scp -o "ProxyJump jumpuser@bastion.example.com:2222" ./localfile internaluser@10.0.0.5:/home/internaluser/。

2) 若在 ~/.ssh/config 中已配置 Host internal,可简化为:scp ./localfile internal:/home/internaluser/。

3) 从内网下载到本地示例:scp -o "ProxyJump jumpuser@bastion.example.com" internaluser@10.0.0.5:/var/log/syslog ./syslog。

注意:若跳板机和目标主机之间没有直接路由,需先在跳板机上转发或使用双向 ProxyJump(ssh -J)。

7. 三类常用端口转发示例及用途

1) 本地端口转发(-L):在本地访问内网服务,例如将本地 8080 转发到内网 10.0.0.5:80:ssh -J jumpuser@bastion.example.com -L 8080:10.0.0.5:80 internaluser@10.0.0.5 -N。然后在本地访问 http://localhost:8080。

2) 远程端口转发(-R):把本地服务暴露到跳板机,例如将本地 3000 暴露到跳板机 9000:ssh -R 9000:localhost:3000 jumpuser@bastion.example.com -N。远端可通过跳板机访问该服务。

3) 动态 SOCKS 代理(-D):建立一个 SOCKS5 代理,用浏览器配置为 SOCKS5 代理即可通过跳板机访问内网或互联网:ssh -D 1080 jumpuser@bastion.example.com -N。

8. 问:如何在两跳(本地→跳板→内网)情况下用 scp 复制文件?

答:使用 SSH 的 ProxyJump 功能即可在一条命令中完成,例如:scp -o "ProxyJump jumpuser@bastion.example.com:2222" ./file internaluser@10.0.0.5:/home/internaluser/。若在 ~/.ssh/config 中配置了 Host internal 和 ProxyJump,则可直接:scp ./file internal:/path/。

9. 问:端口转发断线后如何保持隧道稳定?

答:建议使用 autossh 或 systemd 单元保证自动重连。安装 autossh:sudo apt install autossh。示例命令:autossh -M 0 -f -N -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -L 8080:10.0.0.5:80 jumpuser@bastion.example.com。也可以写成 systemd 服务来管理重启策略。

10. 问:如何确保跳板机安全性最佳实践?

答:关键措施包括:只允许 key-based SSH,禁用 root 登录和密码登录;限制允许登录的用户(AllowUsers);使用非标准端口或基于 IP 白名单;定期更新系统与 OpenSSH;在跳板机上开启日志与审计(如 auditd),并把跳板机作为仅登录跳板,不在上面存放敏感数据或长时间运行服务。

跳板机

来源:入门教学跳板机怎样搭建图解视频使用SCP与端口转发实例