一、ssh远程管理
1.1、ssh (secureshell)协议
- 是一种安全通道协议
- 对通信数据进行了加密处理,用于远程管理功能
- SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,
- 建立在应用层和传输层基础上的安全协议。
- SSH客户端<------------------------------>SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
1.2、openssh
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd config
SSH客户端: Putty、 Xshell、 CRT、MobaXterm、FinalShell
SSH服务端: OpenSSH
SSH服务端: 默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务
作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。
相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动
【但是是7的版本有问题漏洞需要升级,目前最新为9.8】
查看版本 :ssh -V
执行"systemctl start sshd"命令即可启动sshd 服务
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
远程管理linux系统基本上都要使用到ssh,原因很简单:telnet、FTP等传输方式是以明文传送用户认证信息, 本质上是不安全的,存在被网络窃听的危险。SSH(Secure Shell)目前较可靠,
是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
1.3、ssh远程登录方式
1.3.1、登录 方法一
ssh [远程主机用户名] @[远程服务器主机名或IP地址] -p port
如果你想要以用户名为lisi
的身份连接到IP地址为192.168.1.100
的服务器,并且该服务器的SSH服务运行在端口22
上,你应该使用以下命令:
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
![](https://i-blog.csdnimg.cn/direct/aebde052382f439596eac1d416e88f94.png)
附
主机映射
![](https://i-blog.csdnimg.cn/direct/ea047d617088402cad7b81158a9dffb0.png)
![](https://i-blog.csdnimg.cn/direct/98a9a9feb0314c379ed8de9333997994.png)
![](https://i-blog.csdnimg.cn/direct/936c41b30b5644c38468f074ef7045cc.png)
1.3.2、登录 方法二
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
![](https://i-blog.csdnimg.cn/direct/5b8d66212d124c35b1fe56e00d54aa67.png)
(不怎么用)
关于公钥的查询
在客户端查询
![](https://i-blog.csdnimg.cn/direct/ad75eb199df545c4b3ac5411a5ac4b46.png)
服务端查询自己的公钥
![](https://i-blog.csdnimg.cn/direct/9db75d7ae43f4aa0b3128f51820e5bfd.png)
注:第一次登录服务器时系统没有保存远程主机的信息,为了确认该主机身份会提示用户是否继续连接,输入yes 后登录,这时系统会将远程服务器信息写入用户主目录下的$HOME/.ssh/known_hosts文件中,下次再进行登录时因为保存有该主机信息就不会再提示了
![](https://i-blog.csdnimg.cn/direct/fa6d692728304b67a3939b6652360216.png)
当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
解决办法
- 登录ssh连接远程主机时加上"-o StrictHostKeyChecking=no"的选项,如下:
ssh -o StrictHostKeyChecking=no 192.168.xxx.xxx
- 一个彻底去掉这个提示的方法是,修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
但是最好不要添加
二、服务配置与管理
一般配置服务端
vim /etc/ssh/sshd_config
端口要改,防止别人暴力破解
ListenAddress 设置SSHD服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址
安全建议:如果主机不需要从公网ssh访问,可以把监听地址改为内网地址 这个值可以写成本地IP地址,也可以写成所有地址,即0.0.0.0 表示所有IP。
![](https://i-blog.csdnimg.cn/direct/d107e5f530394cd4a9c332749c4866da.png)
当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV,sshd 服务日志存放在:/var/log/secure。
![](https://i-blog.csdnimg.cn/direct/012b2ce83c4b437e92dce86d5cdc9d74.png)
一般来说,为了要判断客户端来源是正常合法的,因此会使用 DNS 去反查客户端的主机名, 但通常在内网互连时,该基设置为 no,因此使联机速度会快些
注:禁用DNS反向解析,以提高服务器的响应速度
![](https://i-blog.csdnimg.cn/direct/9a206aaf25764766b035f6c75eacfcdf.png)
以及一些安全配置,安全调优
![](https://i-blog.csdnimg.cn/direct/43a568636d6e4c0fa74a830776ef9b27.png)
PermitRootLogin 是否允许 root 登入,默认是允许的,但是建议设定成 no,真实的生产环境服务器,是不允许root 账号直接登陆的,仅允许普通用户登录,需要用到 root 用户再切换到root 用户。
![](https://i-blog.csdnimg.cn/direct/00980fa0a8bb49058b3c8fd5c5ffbac8.png)
![](https://i-blog.csdnimg.cn/direct/3b34fb504c9a4988ae05847bb57a0cde.png)
PasswordAuthentication yes
密码验证当然是需要的,所以这里写 yes可以,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。
![](https://i-blog.csdnimg.cn/direct/5713ce52b80a4c24bb9823b578bbab10.png)
PermitEmptyPasswords no
是否允许空密码的用户登录,默认为no,不允许空密码登录
![](https://i-blog.csdnimg.cn/direct/5ab3edd73f3c4452b0d49561f9f0a229.png)
PrintLastLog yes
显示上次登入的信息!默认为 yes
![](https://i-blog.csdnimg.cn/direct/9bce6bff36d14b26a4dd48f9f31b5b49.png)
MaxAuthTries 6
指定每个连接最大允许的认证次数。默认值是 6 。
如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息
默认3次
![](https://i-blog.csdnimg.cn/direct/265986ded7334030b22aca1986d0365f.png)
开启pam模块
注释
![](https://i-blog.csdnimg.cn/direct/a3e9d812c6174fa6a1d420c128f6b2b1.png)
![](https://i-blog.csdnimg.cn/direct/7c3753b866d846ad845a2622cc2cf06a.png)
黑白名单
AllowUsers
当希望只允许或禁止某些用户登录时,可以使用 AllowUsers 或 DenyUsers 配置,两者 用法类似(注意不要同时使用)。
配置AllowUsers
例如,若只允许 zhangsan、wangwu 用户登录其他(lisi)用户
添加
AllowUsers zhangsan@192.168.10.10 wangwu
三、使用密钥登录
分为3步:
客户机在Xshell客户端中,成密钥(公钥与私钥);
放置公钥 到linux服务器的 ~/.ssh/authorized_key文件中;
配置ssh客户机(Xshell客户端)使用密钥登录
3.1、在xshell中密钥登录
- 在xshell 工具中首先生成公钥
![](https://i-blog.csdnimg.cn/direct/d7244155a04d45e299d8b222dd926e7a.png)
调整2048长度,下一步就行,可以设置名称和密码
![](https://i-blog.csdnimg.cn/direct/eeb2576938d44b7686ecdd623653153d.png)
![](https://i-blog.csdnimg.cn/direct/b3d69a248cc542c5807510a64edd873d.png)
生成完成之后会有一个公钥,保存
![](https://i-blog.csdnimg.cn/direct/9a1e48677a9749aba6fd1ec54ead6431.png)
pub结尾的文件
![](https://i-blog.csdnimg.cn/direct/1364a41b36304586ae35b600aa74cab4.png)
然后打开我们的linux机器
切换到~/.shh目录下(第一次免密需要ssh一下,否则可能没有.shh文件)
![](https://i-blog.csdnimg.cn/direct/74f965913bfd4f698de286147096b1c0.png)
![](https://i-blog.csdnimg.cn/direct/947e1e4b09984aa3a6405370d7d7a3fd.png)
上传公钥
![](https://i-blog.csdnimg.cn/direct/d71687867902485c82c6f9621495e031.png)
当然还需要改为标准的名称authorized_keys
生成私钥备份
![](https://i-blog.csdnimg.cn/direct/3767ac06e00f4d35b337329404bd4909.png)
![](https://i-blog.csdnimg.cn/direct/2afdfd22fc3b48978760b1bbe3ab1457.png)
免密登录
![](https://i-blog.csdnimg.cn/direct/a5d10b943d2b43d18e1377d6f71db5f4.png)
![](https://i-blog.csdnimg.cn/direct/e7bb33193fa24656afdf736d6526537f.png)
![](https://i-blog.csdnimg.cn/direct/f5a7f5ab32764568a29ac641b56ae341.png)
![](https://i-blog.csdnimg.cn/direct/1c3845c18a7a4f8ca80682aefa07632a.png)
登录成功
![](https://i-blog.csdnimg.cn/direct/9c779022f82b486c942b0ae6d48f4a7e.png)
3.1.1、使用密钥登录的过程
![](https://i-blog.csdnimg.cn/direct/cce9b6a1221e4aa9a9bf36a05dfd4f33.png)
3.2、在linux上生成密钥登录
准备一个跳板机
ssh-keygen 命令的"-t"选项用于指定算法类型 生成公钥和私钥
![](https://i-blog.csdnimg.cn/direct/ba91fc3abdd34da18be21ed6d4d15051.png)
ssh-copy-id root@192.168.88.19
使用 ssh-copy-id
工具 :这将自动处理公钥的复制过程,这个命令会自动处理将你的 id_rsa.pub
公钥内容追加到远程服务器上的 ~/.ssh/authorized_keys
文件中。
输入密码:由于这是你第一次以这种方式连接到远程服务器,系统可能会要求你输入远程 root 用户的密码。
![](https://i-blog.csdnimg.cn/direct/59737f74c9ae4ff6bf7bb78ec1472673.png)
通过跳板机79登录19
![](https://i-blog.csdnimg.cn/direct/423ac0cf064b468b8e49445098848ca0.png)
修改权限
vim /etc/ssh/sshd_config
![](https://i-blog.csdnimg.cn/direct/92c5ecd96d9e4aa7bd79f600c6e15459.png)
在17,43,65行
![](https://i-blog.csdnimg.cn/direct/8102b6a41d4f4930b93f5bbdae2ff100.png)
重启sshd服务
![](https://i-blog.csdnimg.cn/direct/3c999027da2a4faeb76bb3658b9b2b7d.png)
再尝试
![](https://i-blog.csdnimg.cn/direct/90fa2ad7bddf45c5a5de92b1084a1f67.png)
指定端口,成功
四、Linux服务器升级openssh9.8最新版
内容迁移到文件资源中
默认禁用了DSA签名算法
![](https://i-blog.csdnimg.cn/direct/04920429804d46c19683946059005f4a.png)
![](https://i-blog.csdnimg.cn/direct/5e8b83f91299447695d40814958a65f2.png)
准备文件
openssh官网OpenSSH: Release Notes
![](https://i-blog.csdnimg.cn/direct/841b76b0239140c69a435d8840e1ef96.png)
由于openssh9.8p1要求openssl版本大于等于1.1.1,因此需要升级安装openssl。
官网Release OpenSSL 1.1.1v · openssl/openssl · GitHub
![](https://i-blog.csdnimg.cn/direct/663965bade9a45b2b224c118de1aef58.png)