Linux远程连接服务ssh

1.什么是远程连接服务

远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。
2.远程连接服务器的功能

1)分享主机运算能力
2)服务器类型有限度开放连接
3)工作站类型,只对内网开放

3.常见的远程管理工具方式:

RDP(remote desktop protocal )协议,windows远程桌面管理(图形界面,默认端口:3389
telenet CLI界面下远程管理,几乎所有操作系统都有(内容明文传输),默认端口:23
ssh CLI界面下的远程管理,几乎所有操作系统都有(内容加密传输),默认端口:22
RFB(remote frame buffer) 图形化远程管理协议 VNC (Virtual Network Computing)使用的协议。(在linux unix Macos 下的图形界面远程管理工具),默认端口:5900
4.SSH简介

SSH的工作机制 :

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器

ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序)
Linux远程连接服务ssh_第1张图片

SSH的配置文件在/etc/ssh/sshd_config下:

`Port 22 			监听端口,默认监听22端口   【默认可修改】`
LoginGraceTime 2m   登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
`PermitRootLogin yes 是否允许管理员直接登录,'yes'表示允许`
StrictModes yes     是否让sshd去检查用户主目录或相关文件的权限数据
MaxAuthTries 6      最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
MaxSessions 10      允许的最大会话数

`AuthorizedKeysFile     .ssh/authorized_keys      
服务器生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面,将公钥发给客户端`

`Subsystem sftp /usr/libexec/openssh/sftp-server  
支持 SFTP ,如果注释掉,则不支持sftp连接`

`AllowUsers user1 user2 
登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录 `


SSH特点:

1.SSH代表安全外壳(Secure Shell),它现在是通过互联网访问网络设备和服务器的唯一的主要协议。
2.SSH默认情况下通过端口22运行;不过很容易更改这个端口。
3.SSH是一种非常安全的协议,因为它共享并发送经过加密的信息,从而为通过互联网等不安全的网络访问的数据提供了机密性和安全性。
4.一旦通讯的数据使用SSH经过加密,就极难解压和读取该数据,所以我们的密码在公共网络上传输也变得很安全。
5.SSH还使用公钥用于对访问服务器的用户验证身份,这是一种很好的做法,为我们提供了极高的安全性。
6.SSH主要用在所有流行的操作系统上,比如Unix、Solaris、Red-Hat Linux、CentOS和Ubuntu等。
7.ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序) sftp 22
8.ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接,ssh sftp
5.TELNET简介

1.Telnet是电信(Telecommunications)和网络(Networks)的联合缩写,这是一种在UNIX平台上最为人所熟知的网络协议。
2.Telnet使用端口23,它是专门为局域网设计的。
3.Telnet不是一种安全通信协议,因为它并不使用任何安全机制,通过网络/互联网传输明文格式的数据,包括密码,所以谁都能嗅探数据包,获得这个重要信息。
4.Telnet中没有使用任何验证策略及数据加密方法,因而带来了巨大的安全威胁,这就是为什么telnet不再用于通过公共网络访问网络设备和服务器。


SSH两种验证级别:

第一种级别(基于口令的安全验证)

只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的 服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

例:使用口令的验证
Linux远程连接服务ssh_第2张图片
Linux远程连接服务ssh_第3张图片

ssh后面跟的是你连接的服务器ip地址,使用这种方式我们需要知道用户名和密码

第二种级别(基于密匙的安全验证)(客户端验证服务器)

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

例:免密的连接方式

1.使用命令创建密码对,得到的密钥和公钥保存在用户家目录下的.ssh目录下
[root@130 ~]# ssh-keygen -t RSA
Linux远程连接服务ssh_第4张图片
把公钥发送给服务端,在发送之前需要在服务端先创建.ssh目录,因为ssh会默认加载.ssh目录里面的公钥和服务端的私钥进行匹配
Linux远程连接服务ssh_第5张图片

使用下面的命令吧公钥发送给服务端
[root@130 ~]# scp .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
Linux远程连接服务ssh_第6张图片
客户端进行连接

Linux远程连接服务ssh_第7张图片
例:使用ssh-copy-id命令来发送公钥,把之前客户端和服务端.ssh目录删了。

1.使用命令创建密码对,得到的密钥和公钥保存在用户家目录下的.ssh目录下
[root@130 ~]# ssh-keygen -t RSA
Linux远程连接服务ssh_第8张图片
使用下面命令把公钥发送给服务端,使用这条命令就不需要再服务端创建.ssh目录它会自己创建
[root@130 ~]# ssh-copy-id -i .ssh/id_rsa.pub 192.168.229.131
Linux远程连接服务ssh_第9张图片
连接服务端
在这里插入图片描述
客户端为windo主机,使用密钥验证连接我们的Linux主机

在我们的Xshell上点击工具下的新建密钥用户生成来创建密钥对
Linux远程连接服务ssh_第10张图片
可以根据需要选择密码长度,越长等待时间越久
Linux远程连接服务ssh_第11张图片
点击保存为文件保存在我们的Windows上
Linux远程连接服务ssh_第12张图片

把我们刚刚保存在Windows上的文件,添加到服务端.ssh目录下

Linux远程连接服务ssh_第13张图片

Linux远程连接服务ssh_第14张图片

我们使用xshell进行测试
Linux远程连接服务ssh_第15张图片

点击Public key
Linux远程连接服务ssh_第16张图片

我们发现点击确认并不能连接到我们的linux主机,原因是没有识别到我们服务端的公钥文件,我们需要在服务端把我们的公钥文件改一个名字(我这里原来有一个公钥文件所以我需要把它删除了,要不要ssh不知道识别的是哪个文件)
Linux远程连接服务ssh_第17张图片
我们再次测试(可以看到结果我们已经连接到了Linux主机了)
Linux远程连接服务ssh_第18张图片

你可能感兴趣的:(Linux,linux)