使用ssh远程连接家庭电脑

本文介绍了如何在没有公网IP的内网环境中,通过SSH反向连接实现远程访问内网电脑。首先,创建并配置一个仅用于远程登录的用户,限制其sudo权限。接着,设置SSH配置文件允许特定用户登录。然后,主机A通过SSH命令反向连接到有公网IP的主机B,并在主机B上建立正向连接,监听端口,以便直接从主机C远程访问主机A。最后,通过监控脚本实现断线自动重连,简化远程访问流程。
摘要由CSDN通过智能技术生成

0.背景

家里的电脑一般都是买的移动电信这些运营商的帐号,用pppoe的方式上网的,这种情况的话我们是没有公网ip的,也就是说我们的电脑是位于一个局域网里面的,所以我们是无法直接远程连接到我们的电脑的。
为了实现远程连接到内网的电脑,我准备使用ssh反向连接来实现。

1. 环境介绍

主机A:内网电脑,这里我的系统是linux,用户名假设为test
主机B:有公网ip的设备,可以直接买一个vps,ip假设为10.x.x.x,用户名假设为UserB
主机C:远程设备,比如手机、办公室电脑等
注意:
上面所有的主机都要安装ssh服务

2. 配置远程登录用户

在主机A安装好ssh服务后,需要配置一个允许使用ssh远程登录的用户,这里为了安全起见,建议新建一个用户专门用来远程登录。

1. 创建用户

使用adduser命令可以自动创建一个新用户:

sudo adduser

根据提示输入用户登录密码以及相关信息即可:
在这里插入图片描述
如上图所示,创建了一个test用户,可以使用su test 测试一下用户能不能登入

2. 配置用户的sudo权限

为了安全起见,远程登录用户不应该有全部的sudo权限,这里可以通过配置sudo配置文件实现,默认位置在/etc/sudoers:
在这里插入图片描述
如上图所示,userA是我本地登录电脑的用户,test是我准备用来远程登录的用户,这里我的userA是有root的全部权限的(使用sudo命令),而我远程登录的用户只是想修改一些userA的文件,所以只配置了userA的权限,使用sudo命令的话需要加上-u userA才可以使用sudo:
在这里插入图片描述
大家根据自己远程连接的需要做修改即可,关于sudoer配置文件的详细解释可以参考如下连接:
https://www.doc88.com/p-731455814861.html?r=1

3. 配置ssh配置文件

linux下ssh的配置文件默认位置在 /etc/ssh/sshd_config,打开该文件搜索AllowUsers字段,如果没有就手动添加,如下图:在这里插入图片描述
AllowUsers test,这样就可以使用test用户远程ssh登录啦

ssh反向连接

主机A配置好之后,使用ssh命令反向链接到主机B,命令如下:

ssh -fCNR  <port1>:localhost:<sshd服务port,默认为22> userB@10.x.x.x 

执行成功后,会在userB监听port1端口,并把port1端口的消息转到UserA的ssh服务端口(默认为22)
下一步登入主机B,在主机B中输入如下命令:

ssh test@127.0.0.1 -p <port1>

即可以test用户的身份接入主机A啦

改进

通过上述步骤,我们可以在主机C通过远程接入到主机B,然后在主机B里使用ssh命令接入到主机A。不过这样有个问题,就是主机A的ssh反向链接如果异常中断了,需要手动输入密码才能重新建连,所以参考如下博客,在主机A上启动了一个进程监视脚步,如果ssh服务断了会使用密钥认证自动重连,不需要人亲自去主机A输密码:
https://www.cnblogs.com/x_wukong/p/5997872.html
还有一点,就是现在需要先连接主机B,再连接主机A,两步有点麻烦,这里可以在主机B上再建立一个ssh正向连接,监听一个port2端口:

ssh -fCNL  *:<port2>:localhost:<port1> userB@127.0.0.1

注意:这里的port1必须跟主机A反向连接监听的端口一致,port2可以随便选一个空闲端口

这样我们就可以直接在主机C上使用ssh命令登入主机A:

ssh test@10.x.x.x -p <port2>

注意,test是主机A的远程登陆用户名,10.x.x.x是主机B的公网ip

Have fun~

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值