网站首页 > 开源技术 正文
在前两期的文章中,
我们介绍了银河麒麟桌面操作系统的远程桌面客户端,
以及基于RDP和VNC协议连接远程的计算机的方法。
今天的OS课堂
我们为大家送上了节日技能礼包——
基于SSH连接远程计算机的方法,
也是关于远程桌面客户端的最后一节课程,
祝大家童心未泯,一切皆甜。
SSH(Secure Shell)
SSH协议是一种从一台计算机到另一台计算机的安全远程登录方法。它通过对数据进行加密来保护通信的安全性和完整性。相比于一些不安全的登陆协议和文件传输方法(如telnet、rlogin、ftp等),SSH是一种更为安全的替代方案。
远程连接Windows
Windows10安装OpenSSH服务器程序。
开始菜单-设置-应用-应用和功能,点击“可选功能”。在弹出的窗口中,点击“添加功能”。查找OpenSSH服务器,勾选并安装程序。
图1 安装OpenSSH服务器程序
启动sshd【1】服务
在桌面找到“此电脑”,鼠标右键点击“管理”。在弹出的窗口中,选择左侧任务栏中“服务和应用程序”选项,双击展开,然后点击“服务”选项。找到OpenSSH SSH Server.
图2 服务管理
双击“OpenSSH SSH Server”栏目。在弹出的窗口中,设置“启动类型”为自动,然后点击“服务状态”下的“启动”按钮。点击“确定”关闭窗口。
图3 OpenSSH SSH Server属性页
服务启动后,可以看到本地启动了一个id为78756的进程,监听在22端口,用于接受所有的客户端连接。所以,在服务器端需要设置防火墙放行到本地22端口的入站流量。
图4 sshd端口状态
在客户端电脑上telnet远端22端口,查看端口访问是否正常,如果telnet不通,则需要检查网络链路状态或者防火墙设置是否正确(此例中,部署SSH Server的Windows10电脑的内网地址为172.16.0.1)。
图5 测试端口连通
远程桌面客户端创建连接
在“开始菜单”中找到“远程桌面客户端”,打开程序。在弹出的窗口中,点击左上角的“创建一个新的连接配置文件”【2】。
图6 远程桌面客户端
在“远程桌面设定”窗口中,选择SSH协议类型,在“服务器”一栏中填入要连接到的计算机(即SSH服务端)的ip地址,在“用户名”和“用户密码”栏中填入远程登录的用户名和密码。点击“保存”,保存连接。
图7 ssh密码验证的远程连接
对于已创建的连接,可以双击该连接或鼠标右键选择“连接”,连接到远程桌面。
图8 远程桌面客户端
连接成功后,客户端窗口将显示Windows的命令提示符,用户可以在等同于本地CMD模式一样的操作Windows系统。
图9 远程的命令提示符
远程连接银河麒麟操作系统
Linux系统之间的远程连接,原理上,和Windows之间是差不多的。同样需要在服务器端部署SSH Server并在防火墙规则中放行22端口的入栈流量。
此例中,服务器端选择麒麟服务器操作系统V10 SP1版本,客户端继续使用上例的麒麟桌面操作系统V10 SP1版本。
麒麟服务器版本和桌面版本的操作系统,默认已安装OpenSSH服务端程序(如果用户使用的系统中不包含这些程序,可以手动安装或者向麒麟客服电话寻求帮助)。检查OpenSSH Server已安装,服务状态为active。
图10 OpenSSH服务端进程
服务启动后,可以看到本地启动了一个id为1296的进程,监听在22端口,用于接受所有的客户端连接。防火墙也已放行所有ssh服务的入站流量。
图11 sshd端口状态
在客户端电脑上telnet远端22端口,查看端口访问是否正常(此例中,部署SSH Server的麒麟系统电脑的内网地址为172.16.200.12)。
图12 测试端口连通
远程桌面客户端创建连接
在“开始菜单”中找到“远程桌面客户端”,打开程序。在弹出的窗口中,点击左上角的“创建一个新的连接配置文件”。在“远程桌面设定”窗口中,选择SSH协议类型,在“服务器”一栏中填入要连接到的计算机(即SSH服务端)的ip地址,在“用户名”和“用户密码”栏中填入远程登录的用户名和密码。点击“保存”,保存连接。
图13 ssh密码验证的远程连接
对于已创建的连接,可以双击该连接或鼠标右键选择“连接”,连接到远程桌面。连接成功后,客户端窗口将显示默认的命令行shell,用户可以在等同于本地shell一样的操作银河麒麟操作系统。
图14 远程的bash shell
补充阅读
supplementary reading
SSH提供两种身份验证方式:密码验证和密钥验证。密码验证即输入正确的用户名和登录密码即可登录到远程的计算机;密钥验证需要在客户端生成一组密钥对,并将公钥放在要登录到的远程电脑(即服务端)中,当客户端建立连接请求时,服务端会使用公钥来加密一组随机信息并将其发送到客户端,客户端使用匹配的私钥对这组随机信息进行解密,然后将结果返回给服务端并与原始数据进行比对,如果比对一致则建立连接会话,如果比对不一致则身份验证失败,通道关闭。
图15 SSH密钥验证流程
1.远程连接Windows(密钥验证)
密钥验证与密码验证的操作步骤大体一致,唯一区别是:密钥验证需要将客户端生成的公钥放到服务器端指定位置下即可。
前置步骤请参考“1.远程连接Windows(密码验证)”图1-图6内容。
在客户端电脑上执行ssh-keygen生成密钥文件(密钥保存位置、私钥密码设置为空即可)。
图16 客户端生成密钥对
在服务器端C:\Users\以用户名命名的子目录中手动建立一个名称为.ssh的目录。
图17 服务器端.ssh目录
将客户端公钥文件通过远程传输工具或者手动拷贝至上一步创建的.ssh目录中,并将其重命名为authorized_keys【3】。
图18 发送公钥文件
图19 接收公钥文件
接着,需要修改SSH服务的配置文件,以支持密钥验证。
Windows10中SSH服务的配置文件保存在C:\ProgramData\ssh目录下(请注意:ProgramData是一个隐藏目录,需要设置“显示隐藏项目”)。
图20 SSH配置目录
使用文本编辑工具打开sshd_config文件,注释87、88行:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
保存后关闭文件。在服务管理界面,手动将OpenSSH Authentication Agent服务启动起来(用于密钥验证模式),然后右键点击OpenSSH SSH Server栏目选择“重新启动”,重启SSH Server。
图21 重启SSH Server
完成上述配置后,可以在客户端手动ssh连接到服务器端,验证密钥验证是否成功。
图22 ssh密钥验证
远程桌面客户端创建连接。
在“开始菜单”中找到“远程桌面客户端”,打开程序。在弹出的窗口中,点击左上角的“创建一个新的连接配置文件”。
在“远程桌面设定”窗口中,选择SSH协议类型,在“服务器”一栏中填入要连接到的计算机(即SSH服务端)的ip地址,在“认证类型”一栏中选择“公钥(自动)”。点击“保存”,保存连接。
图23 ssh密钥验证的远程连接
对于已创建的连接,可以双击该连接或鼠标右键选择“连接”,连接到远程桌面。
图24 远程桌面客户端
图25 远程的命令提示符
2.远程连接银河麒麟操作系统(密钥验证)
Linux系统之间的密钥验证登录,原理上,和Windows之间是差不多的。同样需要在客户端生成密钥对并将公钥发给服务器端;但是,在Linux中要特别注意权限问题。
本例中,使用“2.远程连接Windows(密钥验证)”中客户端生成的密钥文件。
在客户端电脑上执行下图中的命令,将公钥文件发送到服务器端。
图26 发送公钥文件
图27 接收公钥文件
完成上述配置后,可以在客户端手动ssh连接到服务器端,验证密钥验证是否成功。
图28 ssh密钥验证
请注意:因为公钥是发送到服务器端root用户的家目录下,而普通用户(包括麒麟管理员用户)默认情况下是无法进入root用户家目录的;所以,此例中,客户端只能通过密钥验证模式登录到服务器端的root用户,使用其它用户登录则会失败。这说明了,ssh密钥验证实现的是用户级的隔离。
远程桌面客户端创建连接。
在“开始菜单”中找到“远程桌面客户端”,打开程序。在弹出的窗口中,点击左上角的“创建一个新的连接配置文件”。
在“远程桌面设定”窗口中,选择SSH协议类型,在“服务器”一栏中填入要连接到的计算机(即SSH服务端)的ip地址,在“认证类型”一栏中选择“公钥(自动)”。点击“保存”,保存连接。
图29 ssh密钥验证的远程连接
对于已创建的连接,可以双击该连接或鼠标右键选择“连接”,连接到远程桌面。
图30 远程的bash shell
注:
【1】ssh daemon即OpenSSH服务器端守护进程。
【2】配置文件存放在
~/.local/share/remmina
【3】对于authorized_keys文件,请注意以下事项:服务器端公钥文件的名称必须是authorized_keys。如果对应用户的家目录下已经存在同名文件,则需要将密钥信息追加到文件末尾,而不是替换原有的文件(对于设置了多个客户端使用密钥验证的服务端,authorized_keys文件中应保存所有客户端的公钥信息)。
出于安全性的考虑,authorized_keys文件权限通常被设置为600。
参考文献:
https://docs.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients
https://www.ssh.com/academy/ssh/protocol
https://gitlab.com/Remmina/Remmina
猜你喜欢
- 2024-10-11 Ubuntu 18 刚安装,该初始配置什么呢
- 2024-10-11 RDP 访问组件 Razor 常见问题(rdp wrapper configuration)
- 2024-10-11 使用国产操作系统Deepin第三十六天,Deepin连接Windows远程桌面
- 2024-10-11 Linux :远程访问的 16 个最佳工具(一)
- 2024-10-11 Linux 桌面----EndeavourOS设置及软件安装(四)
- 2024-10-11 统信UOS V20专业版(1050update2)发布:文件共享全局搜索等优化
- 2024-10-11 Ubuntu 18.04 LTS将于4月26日发布 新增内容介绍
- 2024-07-06 ubuntu与windows局域网内远程相互访问设置笔记
- 2024-07-06 ubuntu第三讲:远程桌面连接(ubuntu远程桌面连接ubuntu)
- 2024-07-06 在Ubuntu上部署xrdp远程桌面服务(ubuntu20远程桌面)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)