0 配置
假设公司有一台没有公网ip的主机A
你想要使用自己的笔记本B在家访问主机A
那么你需要一台有公网IP的跳板机C,这里采用阿里云服务器为跳板。
假设主机A的用户名为userA,密码123
假设跳板机C的用户名为root,密码为456,公网IP为aliyun.ip,开放端口2333
为了能够开机自启,断联重连,需要用到autossh
,如果你公司的主机A从来不关机不重启,直接用ssh
即可。
1 阿里云服务器
1.1购买阿里云服务器,设置账户密码
1.2设置安全组,开放端口
左侧 网络与安全->安全组->选择实例
本实例安全组->选择实例
需要开放入方向和出方向的端口,开放了2333-4555之间的全部端口
1.3上传公钥
为了访问方便,在你的主机A,笔记本B上上传公钥到C
ssh-keygen #生成密钥
ssh-copy-id root@aliyun-ip #上传服务器,用户名和IP地址是你阿里云的
至此,跳板机配置完毕
2 安装autossh
在公司的主机A上安装autossh
sudo apt install autossh
3 设置反向代理
假设主机A的用户名为user,密码123
假设跳板机C的用户名为root,密码为456,公网IP为aliyun.ip,开放端口2333
在主机A输入以下命令:
autossh -M 12345 -fgnvNTR aliyun.ip:2333:localhost:22 [email protected] -o ServerAliveInterval=1
-M
是通过监听12345端口防断联,是autossh的参数
ServerAliveInterval
每1秒检查一次连接
-fgnvNTR
是ssh的参数,自行百度
若采用ssh,去掉几个参数即可
autossh -fgnvNTR aliyun.ip:2333:localhost:22 [email protected]
此时就可以在笔记本B上远程连接了
ssh [email protected] -p 2333
4 autossh自启动
4.1 创建systemd文件
sudo vim /etc/systemd/system/autossh.service
4.2 编写内容如下
[Unit]
Description=autossh
After=network-online.target
[Service]
Environment="AUTOSSH_GATETIME=0"
User=userA
WorkingDirectory=/home/userA
ExecStart=/usr/bin/autossh -M 12345 -gnvNTR aliyun.ip:2333:localhost:22 [email protected] -o ServerAliveInterval=1
[Install]
WantedBy=multi-user.target
需要注意的是参数为-gnvNTR
而不是-fgnvNTR
,因为在systemctl中不支持f参数,不要复制粘贴错了,会无法运行的。
4.3 Reload systemd
sudo systemctl daemon-reload
4.4 Start the Autossh service
sudo systemctl start autossh.service
4.5 Enable at boot
sudo systemctl enable autossh.service
4.6 查看状态
sudo systemctl status autossh
5 连接
在你的笔记本上愉快的连接吧
ssh [email protected] -p 2333
6 解决SSH 长时间不操作卡死
6
6.1 客户端解决
vim /etc/ssh/ssh_config ServerAliveInterval 60
6.2 服务端解决
vim /etc/ssh/sshd_config ClientAliveInterval 60
7 坑
这里面最大的坑就是防火墙!!!
关闭主机防火墙,阿里云端口打开,还有就是路由器的防火墙一定要关了!!!