准备
公司主机 A (192.168.1.10) -> VPS 服务器 S (123.123.123.123) -> 家里主机 B (192.168.8.10).
用户名分别为userA,userS,userB
配置免密登录
建立ssh隧道时,需要输入服务器 S 登录密码。通过设置免密登录,就无需每次建立ssh隧道时输入密码。登录家里的主机 B ,输入以下指令1
2
3
4
5# 使用ssh-keygen生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下。
ssh-keygen
# B 的公钥拷贝给 S,输入 S 密码即可
ssh-copy-id userS@123.123.123.123 -p 22
配置反向隧道
还是在家里主机 B 上1
2
3
4
5# 安装autossh
sudo apt-get install autossh
# 配置ssh反向隧道
autossh -M 5678 -fNR 1234:localhost:22 userS@123.123.123.123
autossh命令后面的参数说明:
- M: 监听 S 公网服务器端口 5678 ,只要断开就重连
- f: 选项传递给 ssh 命令,让 SSH 隧道在后台运行。
- N: 不允许执行远程命令
- R: 1234:localhost:22, 将家里主机 B 的22端口和 VPS 服务器 S 的1234端口绑定,相当于远程端口映射
如果你想系统启动时自动运行 SSH 隧道,你可以将上面的 autossh 命令添加到 /etc/rc.local。
测试
在公司机器 A 上,输入以下指令登录家里主机。这里需要输入家里主机 B 的密码1
ssh userB@123.123.123.123 -p 1234