热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Linux】远程连接服务

1、什么是远程连接服务器远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shellÿ

1什么是远程连接服务器
远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而

登录后的操作感觉就像是坐在系统前面一样。

2、远程连接服务器的功能

分享主机的运算能力

服务器类型:有限度开放连接

工作站类型:只对内网开放

3、远程连接服务器的类型(以登录的连接界面来分类)

文字接口

明文传输:Telnet、RSH等,目前非常少用

加密传输:SSH为主,已经取代明文传输

图形接口:XDMCP、VNC、XRDP等

4、文字接口连接服务器

SSH(Secure Shell Protocol,安全的壳程序协议),它可以通过数据包加密技术将等待传输的数据包加密后再传输到网络

上。ssh协议本身提供两个服务器功能:一个是类似telnet的远程连接使用shell的服务器;另一个就是类似ftp服务的sftp-server,

提供更安全的ftp服务。

5、连接加密技术简介

目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程。

公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。

私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。

SSH工作过程:在整个通讯过程中,为实现SSH的安全连接,服务端与客户端要经历如下五个阶段:

过程

说明

版本号协商阶段

SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本

密钥和算法协商阶段

SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法

认证阶段

SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证

会话请求阶段

认证通过后,客户端向服务器端发送会话请求

交互会话阶段

会话请求通过后,服务器端和客户端进行信息的交互


一、版本协商阶段

1、服务器端打开端口22,等待客户端连接;

2、客户端向服务器端发起TCP初始连接请求&#xff0c;TCP连接建立后&#xff0c;服务器向客户端发送第一个报文&#xff0c;包括版本标志字符串&#xff0c;格式为“SSH-<主协议版本号>.<次协议版本号>.<软件版本号>”&#xff0c;协议版本号由主版本号和次版本号组成&#xff0c;软件版本号主要是为调试使用。

3、客户端收到报文后&#xff0c;解析该数据包&#xff0c;如果服务器的协议版本号比自己的低&#xff0c;且客户端能支持服务器端的低版本&#xff0c;就使用服务器端的低版本协议号&#xff0c;否则使用自己的协议版本号。

4、客户端回应服务器一个报文&#xff0c;包含了客户端决定使用的协议版本号。服务器比较客户端发来的版本号&#xff0c;决定是否能同客户端一起工作。如果协商成功&#xff0c;则进入密钥和算法协商阶段&#xff0c;否则服务器断开TCP连接。

说明&#xff1a;上述报文都是采用明文方式传输。

二、密钥和算法协商阶段

1、服务器端和客户端分别发送算法协商报文给对端&#xff0c;报文中包含自己支持的公钥算法列表、加密算法列表、MAC&#xff08;Message Authentication Code&#xff0c;消息验证码&#xff09;算法列表、压缩算法列表等等。

2、服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。

3、服务器端和客户端利用DH交换&#xff08;Diffie-Hellman Exchange&#xff09;算法、主机密钥对等参数&#xff0c;生成会话密钥和会话ID。

由此&#xff0c;服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据&#xff0c;两端都会使用会话密钥进行加密和解密&#xff0c;保证了数据传送的安全。在认证阶段&#xff0c;两端会使用会话用于认证过程。

 

会话密钥的生成&#xff1a;1、客户端需要使用适当的客户端程序来请求连接服务器&#xff0c;服务器将服务器的公钥发送给客户端。&#xff08;服务器的公钥产生过程&#xff1a;服务器每次启动sshd服务时&#xff0c;该服务会主动去找/etc/ssh/ssh_host*文件&#xff0c;若系统刚装完&#xff0c;由于没有这些公钥文件&#xff0c;因此sshd会主动去计算出这些需要的公钥文件&#xff0c;同时也会计算出服务器自己所需要的私钥文件。&#xff09;2、服务器生成会话ID&#xff0c;并将会话ID发给客户端。3、若客户端第一次连接到此服务器&#xff0c;则会将服务器的公钥数据记录到客户端的用户主目录内的~/.ssh/known_hosts。若是已经记录过该服务器的公钥数据&#xff0c;则客户端会去比对此次接收到的与之前的记录是否有差异。客户端生成会话密钥&#xff0c;并用服务器的公钥加密后&#xff0c;发送给服务器。4、服务器用自己的私钥将收到的数据解密&#xff0c;获得会话密钥。5、服务器和客户端都知道了会话密钥&#xff0c;以后的传输都将被会话密钥加密。

三、认证阶段

SSH提供两种认证方法&#xff1a;

基于口令的认证&#xff08;password认证&#xff09;&#xff1a;客户端向服务器发出password认证请求&#xff0c;将用户名和密码加密后发送给服务器&#xff0c;服务器将该信息解密后得到用户名和密码的明文&#xff0c;与设备上保存的用户名和密码进行比较&#xff0c;并返回认证成功或失败消息。

基于密钥的认证&#xff08;publickey认证&#xff09;&#xff1a;客户端产生一对公共密钥&#xff0c;将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorized_keys文件中。认证阶段&#xff1a;客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorized_keys中的公钥进行对比&#xff0c;如果不相同&#xff0c;则认证失败&#xff1b;否则服务端生成一段随机字符串&#xff0c;并先后用客户端公钥和会话密钥对其加密&#xff0c;发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样&#xff0c;则认证通过&#xff0c;否则&#xff0c;认证失败。

注&#xff1a;服务器端对客户端进行认证&#xff0c;如果认证失败&#xff0c;则向客户端发送认证失败消息&#xff0c;其中包含可以再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证&#xff0c;该过程反复进行。直到认证成功或者认证次数达到上限&#xff0c;服务器关闭连接为止。

[root&#64;localhost ~]# vim /etc/ssh/sshd_config            //默认配置文件

17.#Port 22                                          监听端口&#xff0c;默认监听22端口   【默认可修改】

18.#AddressFamily any                        IPV4和IPV6协议家族用哪个&#xff0c;any表示二者均有

19.#ListenAddress 0.0.0.0                   指明监控的地址&#xff0c;0.0.0.0表示本机的所有地址  【默认可修改】

20.#ListenAddress ::                            指明监听的IPV6的所有地址格式

 

 22.# The default requires explicit activation of protocol 1  

 23.#Protocol 2                                        使用SSH第二版本

 

25.# HostKey for protocol version 1      一版的SSH支持以下一种秘钥形式

26.#HostKey /etc/ssh/ssh_host_key

27.# HostKeys for protocol version 2                     使用第二版本发送秘钥&#xff0c;支持以下四种秘钥认证的存放位置

28.HostKey /etc/ssh/ssh_host_rsa_key                 rsa私钥认证 【默认】

29.#HostKey /etc/ssh/ssh_host_dsa_key              dsa私钥认证

30.HostKey /etc/ssh/ssh_host_ecdsa_key            ecdsa私钥认证

 31.HostKey /etc/ssh/ssh_host_ed25519_key       ed25519私钥认

 35.#ServerKeyBits 1024                                        主机秘钥长度

 

 40.# Logging

 41.# obsoletes QuietMode and FascistLogging

 42.#SyslogFacility AUTH

 43.SyslogFacility AUTHPRIV                   当有人使用ssh登录系统的时候&#xff0c;SSH会记录信息&#xff0c;信息保存在/var/log/secure                                                                      里面

 44.#LogLevel INFO                                  日志的等级

 

 45.# Authentication:

 48.#LoginGraceTime 2m                           登录的宽限时间&#xff0c;默认2分钟没有输入密码&#xff0c;则自动断开连接

 49.#PermitRootLogin yes                         是否允许管理员远程登录&#xff0c;&#39;yes&#39;表示允许

 50.#StrictModes yes                                 是否让sshd去检查用户主目录或相关文件的权限数据

 51.#MaxAuthTries 6                                  最大认证尝试次数&#xff0c;最多可以尝试6次输入密码。之后需要等待某段时间后才能                                                                     再次输入密码

 52.#MaxSessions 10                                 允许的最大会话数

 59.AuthorizedKeysFile .ssh/authorized_keys          选择基于密钥验证时&#xff0c;客户端生成一对公私钥之后&#xff0c;会将公钥放                                                                                              到.ssh/authorizd_keys里面

 79.PasswordAuthentication yes                    是否允许支持基于口令的认证

 83.ChallengeResponseAuthentication no     是否允许使用键盘输入身份验证&#xff0c;也就是xshell的第三个登录方式

129.#UseDNS yes              是否反解DNS&#xff0c;如果想让客户端连接服务器端快一些&#xff0c;这个可以改为no

146.Subsystem sftp /usr/libexec/openssh/sftp-server                    支持 SFTP &#xff0c;如果注释掉&#xff0c;则不支持sftp连接

154.AllowUsers user1 user2            登录白名单&#xff08;默认没有这个配置&#xff0c;需要自己手动添加&#xff09;&#xff0c;允许远程登录的用户。如                                                                 果名单中没有的用户&#xff0c;则提示拒绝登录


 实验一&#xff1a;修改ssh服务端口号

 #修改ssh服务的端口号

[root&#64;web ~]# vi /etc/ssh/sshd_config

Port 2222                                            //加一个端口号为2222

#保存退出后&#xff0c;添加防火墙允许策略

[root&#64;web ~]# firewall-cmd --permanent --add-port&#61;2222/tcp

success

[root&#64;web ~]# firewall-cmd --reload

#添加自定义端口到服务

[root&#64;web ~]# semanage port -a -t ssh_port_t -p tcp 2222

注意&#xff1a;如果执行该命令时出现以下提示&#xff0c;请换个端口再试&#xff1a;

ValueError: Port tcp/4444 already defined

#重启服务

[root&#64;localhost ~]# systemctl restart sshd

重新远程登录时&#xff0c;需要加上修改的端口号

实验二&#xff1a;拒绝root用户远程登陆

请保持服务器上至少有一个可以远程登陆的普通远程账号

 修改配置文件如下&#xff1a;

#打开该选项并修改参数为no

PermitRootLogin no

#重启服务后生效&#xff0c;使用时使用普通用户进行登陆&#xff0c;需要使用root用户时再切换

[root&#64;localhost ~]# systemctl restart sshd


实验三&#xff1a;允许特定用户ssh登陆&#xff0c;其他用户都无法登陆

编辑配置文件&#xff0c;在最后添加如下内容&#xff1a;

AllowUsers USERNAME

USERNAME为你允许登陆的账号&#xff0c;如果是多个用户&#xff0c;中间用空格隔开

#重启ssh服务后生效

[root&#64;localhost ~]# systemctl restart sshd


实验四&#xff1a;虚拟机和虚拟机之间使用密钥进行登录

创建密钥对

[root&#64;web ~]# ssh-keygen -t rsa 

 ssh-keygen - 生成、管理和转换认证密钥   -t制定类型    RSA 

/root/.ssh/id_rsa私钥文件

/root/.ssh/id_rsa.pub公钥文件

#复制该公钥文件到服务端的该目录下&#xff1a;&#xff08;首先服务器端得有该目录&#xff09;

[root&#64;web ~]# scp /root/.ssh/id_rsa.pub root&#64;192.168.9.132:/root/.ssh/authorized_keys

#在本地服务器上登陆对端服务器

[root&#64;web ~]# ssh 192.168.9.132

登录时也可以使用如下命令&#xff08;192.168.9.132为ssh服务端&#xff09;&#xff1a;

[root&#64;client ~]# ssh   -i   /root/.ssh/id_rsa   root&#64;192.168.9.132


实验五&#xff1a;通过xshell使用密钥验证进行登陆

客户端产生密钥的两种方式&#xff1a;

方式一&#xff1a;

[root&#64;web ~]# ssh-keygen -t rsa -b 4096

[root&#64;web .ssh]# cp id_rsa.pub authorized_keys                        //切换到用户目录的.ssh文件下&#xff0c;将公钥文件改名

之后将私钥文件上传到window中

[root&#64;localhost .ssh]# sz id_rsa 

 然后使用xshell进行登录&#xff0c;在用户密钥中选择上传的私钥文件

方式二&#xff1a;

使用xshell工具的用户密钥管理生成公钥和私钥

 

点击<下一步 >:

输入密码&#xff0c;点击<下一步 >:

 这里一定要保存文件再点击完成&#xff1a;

 

然后将公钥上传至服务端的即将要登录的用户的家目录下并命名为

[root&#64;localhost .ssh]# rz                           //选择上传文件                    



[root&#64;localhost .ssh]# mv id_dsa_1024.pub authorized_keys

注意&#xff1a;我们在登录时要选择我们手动生成的密钥&#xff1a;

 

 服务端&#xff1a;

我们可以取消使用密码进行远程登陆

PasswordAuthentication no

#修改配置文件保存退出&#xff0c;重启服务

这样登录页面的密码登录就不可选&#xff0c;只能使用密钥登录 


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 【Python 爬虫】破解按照顺序点击验证码(非自动化浏览器)
    #请求到验证码base64编码json_img_datajson_raw.get(Vimage)#获取到验证码编码 #保存验证码图片到本地defbase64_to_img(bstr ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
author-avatar
个信2502875605
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有