SSH端口转发
背景
- 目的:让外网计算机通过SSH访问内网服务器
- 限制:无法修改路由器以直接进行端口/地址映射
- 资源:具有公网IP的腾迅云服务器一台A(ubuntu)、可联网的局域网服务器一台B(ubuntu)和可联网的外网计算机一台C
- 手段:SSH端口转发
通用服务器安装配置SSH
- 安装 openssh-server
sudo apt update sudo apt upgrade sudo apt autoremove sudo apt install openssh-server
- 修改 /etc/ssh/sshd_config
- 云服务器
- GatewayPorts
- 设置为 no 时,只允许云服务器本身连接到局域网服务器
ssh local_area_network_username@localhost -p port
- 设置为 yes 时,允许其它计算机通过访问云服务器转发端口来连接到局域网服务器
ssh local_area_network_username@remote_ip -p port
- 设置为 no 时,只允许云服务器本身连接到局域网服务器
- 其余设置可根据SSH使用偏好自行配置
- GatewayPorts
- 局域网服务器
- 各项设置可根据SSH使用偏好自行配置
- 云服务器
云服务器配置
- 安装配置SSH
- 开放remote_port端口的TCP连接
- 配置云服务器操作系统的防火墙
- 配置云服务器控制平台的防火墙
- 以前台形式启动sshd服务
/usr/sbin/sshd -D
局域网服务器配置
- 安装配置SSH
- 以后台形式启动sshd服务
/usr/sbin/sshd
- 将局域网服务器中文件~/.ssh/id_rsa.pub中的公钥添加到云服务器中文件~/.ssh/authorized_key中作为新的一行
- 在局域网服务器上执行端口转发命令
ssh -NTR *:remote_port:localhost:22 remote_username@remote_ip
-N 表示只连接远程主机,不打开远程shell
-T 不为这个连接分配TTY
-NT 代表这个SSH连接只用来传数据,不执行远程操作
-R 将远程主机端口转发到本地端口
-L 将本地端口转发到远程端口
云服务器Docker配置(可选)
- 映射端口remote_port:remort_port
- 映射端口random_port:22
- 在Docker中安装配置SSH
- 开放remote_port与random_port端口的TCP连接
ssh -NTR *:remote_port:localhost:22 remote_username@remote_ip -p random_port
外网计算机配置
- 在外网计算机上执行命令
ssh local_area_network_username@remote_ip -p remote_port
在云服务器上进行Docker配置与否,该命令均适用