windows10与ubuntu18.04之间建立SSH远程访问

介绍

本篇文章介绍的是如何将两台连入互联网的电脑之间建立SSH访问连接。特别是如何用Win10远程访问一个非局域网Linux终端。比如,你打算用公司的电脑A访问家里的电脑B,不借助teamviewer等软件,而仅仅是通过SSH安全协议建立连接。

SSH远程访问

SSH 是一种较可靠,专为远程登录会话和其他网络服务提供安全性的协议。相比于利用teamview实现远程访问,这种访问方式在linux下更高效简便,延迟更低,而且逼格更高

如何安装SSH

(如果你已经在局域网下安装并使用过SSH服务,那下面的文字没必要看了,直接跳到NAT和内网穿透那里就够了。)
 
 首先,我们安装ssh对应的客户端和服务端。如果你和我一样,需要用公司的windows10远程操控家里的ubuntu18.04,那么你应该这么安装:

  1. 在公司的windows10系统中下载并安装Xshell6软件,点击此处下载:
    关于如何安装和使用xshell6,可以参考这篇博客,写的很详细:点击查看
  2. 在公司的windows10系统中安装SSH服务器(用来测试XShell的,不是必需):
    打开系统设置,找到应用
    点击可选功能
    安装SSH

测试本地SSH

安装完之后我们就可以先在本地测试一下, 能不能跑通SSH了:
(1)打开cmd并输入指令 ipconfig ,记录本地IP地址 192.168.1.x
(2)在cmd中输入指令 net start sshd ,显示如下代码代表成功开启SSH-server:

1.net start sshd
2.OpenSSH SSH Server 服务正在启动 .
3.OpenSSH SSH Server 服务已经启动成功。

如果显示 “拒绝访问”,请使用管理员身份打开cmd并重新输入net start sshd。

(3)现在打开Xshell6:
点击新建
在这里插入图片描述
在这里插入图片描述

点击连接后会弹出一个对话框:在这里插入图片描述
这相当于记住密钥,点“接受并保存”,弹出用户名对话框,输入你windows10的用户名注意大小写,点确定。在这里插入图片描述
弹出的对话框中,在第一行输入你的windows10用户密码:在这里插入图片描述
点击确定后 在xshell工作黑框里如果出现类似下图情况:“我自己”左边是绿色的点点代表连接成功在这里插入图片描述

NAT/内网穿透

以上只是验证了本地互连,一般来讲也实现了局域网内互连,也就是说你只能通过这种方式连接在同一个路由器下的其他设备。

如果想将家里的电脑和公司的电脑连在一起,必须使用NAT穿透技术

什么是NAT/内网穿透

只有公有IP地址才可以直接上网,平时我们用的私有IP(常常为192.168.x.x的形式)不可以直接上网。你可能会问:但是我的私有IP就能够上网呀?
这是因为你的私有IP是路由器分配给你的,只有路由器的公有IP能正常上网,你才能上网。如果运营商不给你分配有效的公有IP,你连接路由器当然上不了网啦(感觉说了一堆废话

你可能还会问,那这跟我想做的事情有什么关系?

如果你想远程访问家里的ubuntu系统,你必须把你家里的电脑的私有IP变为公有IP,让所有接入互联网的人都可以访问你的电脑。

实现这种操作的办法是NAT或者叫内网穿透

对NAT和内网穿透具体原理感兴趣的小伙伴可以参考这里 NAT原理以及内网穿透原理

这里不详细介绍方法的原理了,我直接说怎么实现

如何实现NAT

NAT也叫网络地址转换。NAT是为了搭建虚拟服务器或者共享服务器而产生的。实现这个方法的条件是:家里的路由器支持端口映射/虚拟服务器/端口转发中的任意一个其实都是一个意思

1.如何查看自己的路由器端口映射设置
打开浏览器,输入192.168.1.1,进入登陆界面,输入管理员用户名密码,初始默认用户是admin,密码是空。(输入网址没反应的话,看看家里路由器背面的登陆地址)

登陆进去后,在设置/高级设置 中找到 NAT/虚拟服务器/端口映射/端口转发 中的任意一个(不同路由器厂家说法不太相同,其实都是同一个东西)。点击 添加规则/添加映射。(如果找不到,说明路由器过时了,不具备NAT/DDNS功能,后边你也不用看了……

界面大概是这个样子:
在这里插入图片描述
名称:随意,你给这个映射随便起个名字,如 Ubuntu
外部端口:随便起一个端口 建议5位数的端口 如 50310
内部IP地址:你家里的本地IP(192.168.X.X)
内部端口:22 (ssh访问专用端口)

完成上述操作后,点击添加即可。

接下来 顺便在ubuntu系统的终端里安装SSH-server

sudo apt-get install openssh-server

记得要改 ssh的权限要求:

   sudo vim /etc/ssh/sshd_config

如果提示无效命令,请安装vim……(sudo apt-get install vim)
在vim 打开的文件中,往下拉找到这一行:
PermitRootLogin prohibit-password
改为:
PermitRootLogin yes

即开启远程root权限,改完之后,接着按 Esc ,再输入 :wq 退出。

接下来验证ssh是否启动:

sudo ps -e|grep ssh

如果输出里 包含 sshd 即为 成功启动

这个时候 你记录下你们家的公网IP地址(如果你不知道,用你家里的电脑浏览器点击这里
保持家里的ubuntu常开(记得关掉电脑的自动休眠,防止电脑自动睡眠),然后去公司电脑里打开Xshell,像刚刚一样新建一个连接:
IP地址:你记录的公网IP地址
端口:你端口映射里设置的外端口,如50310
一路确定,保存密钥,登录你ubuntu的用户名和密码。然后就得到了如下画面:
在这里插入图片描述

关于DDNS

你先别急着回公司,先看看家里的路由器公网是静态IP协议还是动态IP协议,一般在路由器基本设置里就可以看到。如果你是静态IP协议,那么恭喜你,你不需要看下面的内容了,直接按上述步骤操作完即可。
如果是动态IP呢?
你的公有IP地址就会周期性的被运营商更改,可能你需要每次出家门前查一下自己家里的公网IP地址,然后记录下来,去公司的时候,重新配置Xsheel里的IP地址,很麻烦对不对?
所以建议用DDNS的方法

如何实现DDNS

如果你家里路由器的高级设置里边还有DDNS,那么恭喜你,你还可以用这个办法,否则就没招了。

  1. 找一个免费的DDNS提供商 这个自己百度找一个。下面这个是我自己用的,这是官网
  2. 注册完后得到一个域名:
    在这里插入图片描述
  3. 记录DDNS供应商的 用户名、密码、域名 三个信息
  4. 打开路由器高级设置中的DDNS设置页面并填入信息:
    在这里插入图片描述
  5. 过几分钟,如果正确,就会有如下显示:

在这里插入图片描述
6. 一切弄好之后 记录下网站上的域名和对应端口号 如 285c887k06.****.viop:12345
这个时候回到公司,新建Xshell连接,IP地址填写 你的域名 端口 填写 域名后边附带的端口号 后面操作和前面的保持一致,一路确定即可。

报错信息总结

如果上述方法,依旧无法正常连接。你可能需要手动安装一个DDNS供应商的linux客户端进行配置了:
在家里的Ubuntu系统里下载DDNS供应商的linux版客户端:下载地址
具体安装教程参照这个:linux下虚拟服务器客户端安装方法
在下载的deb文件所在目录下右键打开终端,输入

sudo dpkg -i phddns_x_x_x.deb     #下载的deb文件名,输入前几个字母后按Tab键直接补全名字

这时候会弹出来一个框框,里面写着一个SN码,千万不要关掉终端
在这里插入图片描述
图中的马赛克部分,即是SN码,复制下来,打开域名管理的登陆界面
在登陆界面 用户名输入SN码 密码输入 admin 点击登录~
然后按提示激活这个用户 ,这时候可能会给你重新分配一个域名,按刚刚NAT的方式重新走一遍流程。然后在刚刚的终端里输入如下命令:

sudo services ssh restart
sudo phddns start

在得到成功开启的反馈后,打开花生壳的用户管理界面,点击下图的加号:
在这里插入图片描述
在这里插入图片描述
操作成功后,你会发现内网穿透里多了一个:
在这里插入图片描述
点击诊断,如果发现映射指向成功,就代表我们成功实现了内网穿透。这时候记录下来你的域名(公司Xshell里的IP地址)以及域名后边跟的一串数字(公司Xshell里的端口)即可,Xshell的用户名和密码即ubuntu的用户名和密码。

这样,你只要保证家里的Ubuntu保持屏幕常亮,且终端里开启 如下两个服务:

sudo service ssh start
sudo phddns start

你在公司里就可以用win10的Xshell 访问你的ubuntu了。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值