Ubuntu使用内网穿透实现外网ssh远程登录

2021/5/23 7:29:38

本文主要是介绍Ubuntu使用内网穿透实现外网ssh远程登录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Ubuntu使用内网穿透实现外网ssh远程登录

想要远程Ubuntu可以使用ssh网络协议进行远程登录

那什么时ssh呢?

SSH 为 Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital、UNIX、Irix,以及其他平台,都可运行SSH。

简单来说,ssh就是一种网络协议,用于计算机之间的加密登录

ssh功能

传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服>务器的数据,然后再冒充你把数传给真正的服务器。服务器和你之间的数据传送被“中间>人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"

ssh登录

从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

ssh user@IP

如果需要调用图形界面程序可以使用 -X 选项

ssh -X user@IP

如果客户机的用户名和服务器的用户名想要,登录的时候可以省略用户名

ssh IP

另外,也是很主要的一点,ssh服务默认的是22端口,如果在登录的时候不指定端口号默认的就是22端口,如果端口改动,需要加上参数**-p**指定

ssh -p port user@IP

第二种级别(基于密匙的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行>安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密>匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒

使用ssh-keygen命令生成秘钥对

ssh-keygen -t 加密算法

最后跟的时加密算法类型,就是选择那种类型加密

ssh-keygen -t rsa

这种意思就是选择rsa类型加密算法

将公钥复制到主机中

ssh-copy-id user@IP

这样再次登录的时候就不用输入密码了

Ubuntu的ssh远程

Ubuntu默认时带有ssh-client的,就是本身就是一个客户端,直接可以远程登录别的宿主机,但是没有ssh-server的,就是不能作为一个服务器存在,如果不确定自己机器上是否安装了,可以使用以下命令查看

dpkg -l | grep ssh

在这里插入图片描述

安装服务器端和客户端的命令,视情况安装,如果只是控制别的电脑只需要客户端,如果需要开放 ssh服务就需要安装服务器端]

安装客户端(默认是带有客户端的,一般不需要安装)

 sudo apt-get install openssh-client

安装服务器端

sudo apt-install openssh-server

启动ssh-server服务,该服务在/etc/init.d/ssh下,直接启动就可以

sudo /etc/init.d/ssh start

查看服务是否在运行

ps -ef | grep ssh

在这里插入图片描述

安装之后就可以去实现远程其他主机了,在第一次远程主机的时候,会提示你确定主机的真实性,选择yes进入,输入密码就会进入到宿主机的目录下

在这里插入图片描述

外网访问内网

上面这种方法ssh登录只能在局域网内进行,外网时访问不了的,如果想要实现外网访问内网就需要通过内网穿透技术

内网穿透的原理

内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,具有一个动态或者是固定的公网IP,最后ADSL直接在交换机上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外,还可以解决UDP中出现的数据传输不稳定问题。

说白了,内网穿透就是将你的内网想法设法映射为一个公网IP,因为公网IP时唯一的,实现外网能够访问你主机的应用,那什么是公网IP和私网IP呢?

公网IP和私网IP

1、公有IP指以公网连接Internet上的非保留地址。私有IP是在本地局域网上的IP。

2、公有IP由InterNIC负责。这些IP地址分配给注册并向InterNIC提出申请的组织机构。通过直接访问互联网。私有IP随着私有IP网络的发展,为节省可分配的注册IP地址,有一组IP地址被拿出来专门用于私有IP网络。

3、优势不同:公有IP是公共网络中的计算机和Internet上的其他计算机可以随意地相互访问。私有IP在公网上无法识别,内部IP地址必须通过NAT转换成公网上可用的IP地址,才能实现内部IP地址与外部公网的通信。

4、公网ip具有世界范围的唯一性,而内网ip只在局域网内部具有唯一性。

5、私网ip只在局域网内有效,私网ip可以有好多想用的,比如在A局域网内有192.168.3.1,在B局域网内也可以有192168.3.1

内网穿透可以通过第三方的端口来实现,内网穿透的工具也有很多,比如花生壳,nat123,NATAPP等等,这里使用的时花生壳实现内网穿透

花生壳内网穿透

去官网下载:https://hsk.oray.com/

下载后安装.deb,.deb类型是linux下可执行的文件,实在不行,你可以类比为win下的exe

sudo dpkg -i file.deb

不使用命令行安装的话,在ubuntu下右击可以直接可视化安装

安装成功后在终端输入phddns status可以直接查看状态,phddns后接很多参数,在命令行中可以查看到

在这里插入图片描述

如果要执行start或restart等命令,需要在root管理权限

登录到官网控制台,新建应用,映射的是本机的22端口,在选择的时候可以选择http、ssh、tcp,看你需要什么类型就选择什么类型,花生壳就会自动给你分配外网域名和外网端口

在这里插入图片描述

成功之后就可以实现外网下ssh远程登录了

注意一点,这里做完内网穿透后,ssh远程时候需要带上port

ssh -p port user@外网IP

一下的步骤就和上述的一样了,第一次登录会提示你是否确定主机真实性,选择yes之后输入密码,就会远程到宿主机上
在这里插入图片描述



这篇关于Ubuntu使用内网穿透实现外网ssh远程登录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程