1.
准备与前提
准备一台位于台湾的服务器(有公网IP或路由器可做端口映射),本地机器安装OpenSSH客户端(Linux/macOS自带,Windows建议使用Windows Subsystem for Linux或PuTTY/OpenSSH)。确定登录用户(非root更安全)、目标服务端口与希望使用的SSH端口(建议非22,例如2222)。
2.
在服务器上安装与基本配置sshd
在服务器执行:apt install openssh-server(Debian/Ubuntu)或yum install openssh-server(CentOS)。编辑 /etc/ssh/sshd_config,修改或确认:Port 2222、PermitRootLogin no、PubkeyAuthentication yes、AllowTcpForwarding yes、GatewayPorts no(需要远程端口开放可设为 yes)。保存后重启:sudo systemctl restart sshd。
3.
生成密钥并部署公钥
本地执行:ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519(不建议使用空密码)。将公钥上传:ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@your.taiwan.ip 或手动将内容追加到服务器~/.ssh/authorized_keys,并设置权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。
4.
服务器防火墙与路由器端口转发
在服务器上打开SSH端口:sudo ufw allow 2222/tcp 或使用iptables。若服务器在内网,通过路由器将外网端口(例如外部2222)映射到服务器内部IP的2222端口,检查ISP对该端口的限制。使用nmap或telnet测试端口连通性:nmap -p2222 your.taiwan.ip。
5.
测试SSH连接与常见问题
本地连接命令:ssh -i ~/.ssh/id_ed25519 -p 2222 user@your.taiwan.ip -v。若提示权限拒绝,检查authorized_keys权限、sshd_config中PubkeyAuthentication与AllowUsers、服务器日志(/var/log/auth.log 或 /var/log/secure)。
6.
本地端口转发(示例:访问内网Web)
场景:服务器能访问内网主机10.0.0.5:80,本地想通过服务器访问它。运行:ssh -L 8080:10.0.0.5:80 -p 2222 user@your.taiwan.ip -N。然后在本地打开 http://localhost:8080 即可访问目标Web服务。参数说明:-L 本地端口:远程目标IP:远程端口,-N 不执行远程命令。
7.
远程端口转发/反向隧道(示例:将本地开发暴露到服务器外网)
场景:本地开发服务在本地机器3000端口,但本地在内网。执行在本地:ssh -R 9090:localhost:3000 -p 2222 user@your.taiwan.ip -N -f。此时外网可通过 your.taiwan.ip:9090 访问到你的本地3000端口。注意服务器sshd_config需 AllowTcpForwarding yes 与 GatewayPorts yes(若需绑定0.0.0.0)。
8.
动态端口转发(SOCKS代理)
若想把流量通过
台湾服务器走代理,使用:ssh -D 1080 -C -p 2222 user@your.taiwan.ip -N。然后在浏览器或系统代理配置中设置 SOCKS5 主机为 localhost:1080 即可实现所有应用的代理转发。
9.
持久化与自动重连
生产或长期使用建议用 autossh 保持反向隧道自动重连:sudo apt install autossh,示例守护进程命令:autossh -M 20000 -f -N -R 9090:localhost:3000 -p 2222 user@your.taiwan.ip。也可写 systemd unit 文件管理,保证开机自启与重连。
10.
问:如果SSH端口被ISP屏蔽怎么办?
答:可尝试更换端口(例如443或80更不易被屏蔽,但有安全与冲突风险),使用VPN或借助云跳板机(在公网云上开机再从云跳到台湾内网),或联系ISP开放端口。
11.
问:如何保证端口转发的安全性?
答:限制仅允许特定用户Forwarding,使用公钥认证并禁用密码登录,配置防火墙仅允许信任IP访问转发端口,使用Fail2ban防暴力破解,定期更新系统与sshd。
12.
问:如何排查无法转发或连接超时问题?
答:检查本地与服务器防火墙规则、路由器NAT映射、sshd_config中AllowTcpForwarding/GatewayPorts设置、目标服务是否在目标IP/端口监听,并用 ss -tnlp / netstat 或 curl/telnet 进行逐跳测试。
来源:技术实践 如何进入台湾本土服务器 SSH与端口转发配置示例