9-1 再说SSH协议
本章介绍
Ansible: (翻译中并没有这个单词,查了下名字来源)Ansible这个词是美国科幻小说作家厄休拉·勒古恩(Ursula K. Le Guin)在她1966年的小说《罗卡农的世界》(Rocannon's World)中创造的。 在勒古恩的虚构宇宙中,ansible是一种假想的设备,能够跨越遥远的距离,甚至在星系之间进行瞬时或超光速通信。这个词本身被认为是answerable (可回答的)的缩写,反映了该设备能够立即传递响应的能力。
Ansible自动化工具底层依赖SSH协议 ,相比其它协议,不需要在被管理节点安装额外的代理软件(如SNMP协议)。
SSH作为基础的、最流行的远程连接协议,网络设备上容易配置,Linux系统则默认已安装和开机启动,因此Ansible工具的前期准备较为简单。
Ansible是一个Python写的包,脸上SSH把各种操作写成了模块 ,例如专门管理服务的、专门运行原生命令的等等,用户只需要调用模块和配置命令参数。
服务器选型
本章课本选用的是eNSP中的设备做服务器。但Ansible官方教程用Linux作服务器;书本从第十章开始使用Linux作服务器;本章SSH协议在Linux上默认开启。因此从本章开始采用Linux服务器。
Ansible依赖Python语法新特性,(2025年04月)经测试,当前Ansible版本在CentOS-Stream-8上的Python 3.6.x报错、如果想进行更进一步实验需要换系统软件源和编译安装新版本python。在CentOS-Stream-9上Python 3.9.x测试通过,但CentOS比较保守,这个python版本也比较老了可能过半年就失效。 虽然可以安装独立版本的Python,但编译安装会增加额外步骤。这里当前最新的Ubuntu 24.04.02 LTS系统,自带Python 3.12.3。
继续深入SSH协议
大多数Linux发行版上的SSH协议已经安装并开机启动,因为在云服务器时代人们需要远程连接到另一个地方的服务器才能开始操作。
(仅针对本校)我们在《网络服务部署与管理》课程中主要在虚拟机中操作,在本课程第三章中在eNSP S5700中操作,其它老师可能让练习过Putty连接CentOS。但同学们对这部分掌握的比较浅。 下面将介绍ssh配置文件中一些参数的意思,常用的客户端,通过密钥方式登录。
(已完成,略过)安装操作系统和一些设置
镜像:Ubuntu官网下载 版本:24.04.02 LTS Desktop
安装:VMware Workstation光驱选择镜像后正常安装,详见网上教程。
其它设置:
创建用户zhangsan ,密码111111
设置root用户密码111111
网卡适配器:桥接。(仅针对本校机房)如果桥接模式下无网络,原因为宿主机上的Virtualbox的仅主机虚拟网卡的影响。解决方法 Windows网络设置-网络适配器选项-禁用掉VirtualBox的网卡。
apt update:更新软件源,但是机房电脑会还原,过一段时间后仍然需要在安装软件前更新。
禁用自动锁屏
桌面允许root登录:ubuntu最近的新版本为了安全已经不允许root登录,需要修改密码验证模块代码,详见CSDN Ubuntu24允许root用户桌面登录 ,后面建议使用sudo。
安装openssh-server:桌面版本系统只预装ssh client,server需要安装。
# root用户权限下 apt update # 更新软件源列表。换源有问题的查询其它文章 apt install openssh-server # 安装ssh服务端。openssh-server openssh-client systemctl start ssh # 启动服务。安装后的服务名为ssh.service systemctl enable ssh # 添加开机启动。sshd允许root登录: nano /etc/ssh/sshd_config 中PermitRootLogin值修改为yes,为了方便后续实验中客户端拥有权限。
# 1.注意服务端配置文件名是sshd_config不是客户端的ssh_config! nano /etc/ssh/sshd_config # 2.取消注释或写一行新的。no不允许root登录;prohibit-password,默认值,允许密钥对登录但不允许密码;yes 允许密码方式登录。 - PermitRootLogin prohibit-password + PermitRootLogin yes # 3. 重启sshd进程 systemctl restart ssh # 4. 测试 ssh root@127.0.0.1终端图标固定入dock栏:。
安装Pycharm Community:第九章实验管理节点不能为Windows系统,需要在虚拟机中进行。
客户端
Windows/Linux/MacOS终端自带。
作为流行必要常用的协议,各大系统命令行均自带ssh客户端。
初次登陆会提示是否信任服务器证书,输入yes回车(注意输入y不行)。
输入用户的密码。
连接成功后进入伪终端,可以进行各种命令。
Putty 第三章用过,略。
⏬下载地址: 安装包putty-x86-64-v0.83.msiPycharm Pro自带的Deployment部署工具和SSH工具。菜单/Tool/start ssh session。挺好用,但机房用的社区版。
SFTP协议
在《网络服务器部署与管理》课程中,已经学习过FTP协议。既然SSH协议可以让客户端与服务器建立连接,那么在此基础上发展而来的文件传输协议就是SFTP,并且比FTP更为安全。
之前我们传输文件直接在虚拟机与宿主机间拖动,这时VMware提供的功能,云服务器中要求文件传输协议。
⏬下载FileZilla客户端 安装包FTP客户端FileZilla_3.68.1_setup.exe

密钥方式登录
云服务器实际非常容易受工具,代码可以轻松遍历和并发,暴力尝试登录SSH,如果你有一台云服务器可以看到每天可能被尝试登录几十万次。因此ssh默认禁止root密码登录方式。
密钥登录仅第一次比较麻烦,之后搭配图形化工具就方便且安全了。
大体步骤:在Windows客户端生成密钥对,公钥内容上传至Ubuntu服务器、追加到服务器的主机信任列表里,Windows客户端通过私钥发起ssh免密码登录。
生成密钥对儿。
各大操作系统都有生成密钥对的命令,重要的分清私钥留在客户端,公钥留在服务器。
根据向导生成,如果没有特殊需求,一直回车。保存位置默认在 当前用户家目录/.ssh/id_xxx (注意.ssh是个隐藏文件夹资源管理器默认情况下看不到),保护密钥的密码(可选,建议直接回车不设置), 最后会在当前用户的家目录下的 .ssh 隐藏目录中生成两个文件形如 私钥id_rsa和公钥id_rsa.pub。 
(重点)公钥内容追加至服务器.ssh目录下的收信任文件中
方法一:通过SFTP工具上传公钥至服务器,然后cat id_rsa.pub > .ssh/authorized_keys。
方法二:SFTP工具往往自带简易文本编辑器,双击编辑远程服务器的 /root/.ssh/authorized_keys (初次windows会弹窗询问,选择用记事本打开authorized_key文件), 本质是先通过SFTP把远程文件下载到本地,用记事本打开,编辑完后再上传至服务器覆盖旧文件 (所以文件内容变化后会有弹窗询问是否上传服务器)。最后不放心的话可以在服务器端cat查看受信任文件内容。

Windows客户端携带私钥文件登录

在不需要输入密码的情况下直接登录,只要私钥文件安全,别人就无法登录服务器。
其它图形化工具体验更佳,自行尝试。