1. 背景
由于家里、公司的电脑没有公网ip,导致无法通过公网ssh远程操作电脑。因此需要通过公网IP代理转接,利用autossh实现网络穿透,实现ssh远程操作主机。
2.中转主机网关端口配置
- 修改 ssh 配置文件vim /etc/ssh/sshd_config
找到GatewayPorts no 配置为 yes 或者只单独打开某些端口更安全
这样可以把监听的端口绑定到任意ip 0.0.0.0上,否则只有本机127.0.0.1可以访问。
如不配置也可以先ssh登录中转主机后使用 ssh 用户名@127.0.0.1 -p 端口
- 重启ssh服务
shell
systemctl restart sshd.service
3. 远程主机安装软件包
shell
#centOS 安装
yum -y install autossh
# ubuntu 版安装
apt-get install autossh -y
# 查看软件包可执行脚本的位置
which autossh
4. 远程主机设置免输密码登录中转主机
在需要远程的主机生成ssh秘钥并传输秘钥到中转主机上
shell
# 生成ssh秘钥,提示内容按回车
ssh-keygen
# 需要确保.ssh/id_rsa 文件的权限是 600
sudo chmod -R 600 .ssh/id_rsa
# 上传密钥到中转主机上
ssh-copy-id 中转主机账号@IP地址 -p 端口
5. 远程主机上手动启动
终端执行:
shell
/usr/lib/autossh/autossh -M 22223 -CqTnN -R 32156:localhost:22 中转主机账号@IP地址 -p 2243
# 22223 服务器上通道的端口,不能被其他进程占用
# 22222 ssh远程服务器端口
# localhost:22 中转主机ssh地址(一般不需要修改)及端口
如果提示还需要输入密码,就是上个步骤4上传密钥未成功或.ssh/id_rsa权限不对
6. 在远程主机设置开机自启动
或者使用 /etc/rc.local 开机自启动
sudo vim /etc/rc.local
添加一行以下内容
shell
su 用户名 -c '/usr/lib/autossh/autossh -M 22223 -CqTfnN -R 32156:localhost:2243 中转主机账号@IP地址 -p 234 &'
如有错误或更好建议,请大家评论。