首页 > 系统相关 >Linux系统的SSH优化

Linux系统的SSH优化

时间:2022-08-30 12:44:19浏览次数:87  
标签:公钥 登录 指纹 SSH Linux 优化 服务端 客户端

在Linux系统中,我们想使用SSH命令登录到另一台服务器中,在第一次登录时,会提示我们验证指纹,如下所示

同一网络下,为了确保你想SSH访问的Linux系统是无误的,可以在另一端确认指纹(指纹是由公钥生成的,因此需要根据客户端提示的密钥类型和加密方式在服务端得出指纹二者进行比较)

由上述对比,发现我们想要登录的一端和我们登录提示显示的指纹一致,因此只需要在SSH客户端确认指纹信息并输入服务端的密码即可登录成功

我们先确认指纹,不输入密码,然后我们会发现我们当前用户的家目录下会生成一个.ssh的目录,并且该目录下会有一个known_hosts的文件,该文件就记录了服务端端公钥

确认指纹后,客户端再次登录服务端的时候就不会提示验证指纹了

上面情况是客户端和服务端指纹一致的情况,下面我们模拟指纹不一致的情况,即我们手动修改known_hosts文件里服务端端公钥,修改后,我们再次登录会提示以下内容

由于系统本身的差异,所以debian系统的反馈是known_hosts文件里的指纹和目标主机指纹不一致,所以需要重新验证指纹

但如果我们把stream9作为客户端,debian作为服务端,即我们在stream9端SSH登录debian,然后同样的手动修改known_hosts文件里记录的debian的公钥,此时会提示我们公钥验证失败

解决办法:删除known_hosts文件(如果known_hosts文件里还有其它远程主机的公钥,那就删除该文件里对应主机和公钥的一行或几行),重新SSH登录验证指纹获取debian端的公钥(删除后再登录就不会提示公钥验证失败)

在我们每次登录到远程主机的时候,都提示我们需要验证指纹,验证指纹的办法无疑是提高了系统的安全性,但另一方面,也给自动化运维增加了不便,因为自动化运维涉及的服务器较多,需要登录到很多服务器上进行操作,因此在做自动化运维的时候基本是把验证指纹关闭的。同时,SSH命令也给我们提供了一个可以临时关闭验证指纹的选项

上面这个命令虽然可以关闭验证指纹,但我们也不想每次敲这么长的选项,因此我们可以在SSH客户端配置文件中添加一下参数来永久关闭验证指纹

(UserKnownHostsFile=/dev/null表示将客户端的公钥放入黑洞文件中,这样即使公钥和主机不匹配,也不会出现上面公钥验证失败的情况,这样做的缺点就是少了一些安全性,但在内网从零开始部署服务器的时候我们认为是绝对安全的)

同样的,我们可以通过修改SSH Port和禁止root用户远程登录来增加我们系统的安全性

参考命令:sed -i -e '/^#Port 22/a Port 21212' -e '/^#PermitRootLogin/a PermitRootLogin prohibit-password' /etc/ssh/sshd_config ; systemctl restart sshd

(上面命令可以将SSH服务的端口改为21212并且关闭SSH服务的root用户远程登录)

我们还可以通过SSH禁止密码登录,开启密钥登录来增强安全性

然后客户端生成密钥对,并把公钥拷贝给服务端

(ssh-copy-id命令的本质其实是scp,如果你知道服务端记录客户端公钥文件的位置,使用scp也可以)

远程复制客户端公钥到服务端,需要输入服务端端密码,如果不知道服务端密码,可以将客户端公钥复制给服务端管理人员,它将你的公钥放进公钥文件你即可远程免密登录

如果复制公钥后不能远程免密登录,那可能是C/S两端所支持的密钥类型和加密方式不同,因此尽量保持C/S两端的openssh软件版本别想差太多

如果有需要源码包编译安装升级openssh,可参考:源码包编译安装openssh9.0

查看服务端存放客户端公钥的文件

如果需要更改该位置,更改后记得重启sshd服务

SSH服务端可更改的选项很少,但SSH客户端可更改的选项有很多,并且客户端选项更改后不需要重启服务

标签:公钥,登录,指纹,SSH,Linux,优化,服务端,客户端
From: https://www.cnblogs.com/demoduan/p/16638795.html

相关文章

  • Linux是严格区分大小写的,这一点和 Windows不一样,所以操作时要注意区分大小写的不同,包
    linux下的文件夹名字区分大小写吗?_百度知道 https://zhidao.baidu.com/question/395925577.htmlLinux是严格区分大小写的,这一点和Windows不一样,所以操作时要注意区分......
  • openssh版本升级
      OpenSSH_7.4版本曝出OpenSSH输入验证错误漏洞(CVE-2019-16905),安全漏洞(CVE-2021-41617),OpenSSH安全漏洞(CVE-2021-28041),修复方法为升级OpenSSH。centos7openssh......
  • 220830-linux磁盘系统初识
    linux中,每一个设备都会被当做一个文件来看待。在linux中,所有的硬件设备文件都会在/dev这个目录下。而SATA接口的硬盘文件名称会被命名为/dev/sd[a-d]。分区的命名:Windows......
  • Linux输出重定向>和>>的区别是什么?
    Linux输出重定向>和>>的区别是什么-百度经验 https://jingyan.baidu.com/article/358570f64345c4ce4724fcba.htmlLinux输出重定向有>和>>,如果不清楚他们的区别,混淆......
  • linux crw-rw-rw- 开头的c 是啥意思?
    linuxcrw-rw-rw-开头的c是啥意思?_百度知道 https://zhidao.baidu.com/question/436282328.htmlC代表这个文件对应的是字符设备,所谓字符设备就是鼠标、键盘等,可以简单......
  • Linux 驱动开发-简单的驱动框架编写
    编写一个简单的linux驱动代码栗子1、源文件xxx.c#include<linux/kernel.h>#include<linux/module.h>//模块入口函数staticint__initdemo_init(void){ pri......
  • linux用wget下载的文件放在什么地方?
    linux用wget下载的文件放在什么地方?_百度知道 https://zhidao.baidu.com/question/1824525879028523548.html匿名用户2017-12-16 Linux系统中的wget是一个下载......
  • Linux之awk数组(四)
    1.awk数组AWK可以使用关联数组这种数据结构,索引可以是数字或字符串。AWK关联数组也不需要提前声明其大小,因为它在运行时可以自动的增大或减小。AWK不支持多维数组。2......
  • linux系统 BCM43142的网卡 安装
    检查网卡驱动:[paul@localhost~]$lspci|grepNetwork09:00.0Networkcontroller:BroadcomInc.andsubsidiariesBCM43142802.11b/g/n(rev01) 安装依赖:......
  • linux创建用户、设置密码、修改用户、删除用户
    linux创建用户、设置密码、修改用户、删除用户_sunxx1986的博客-CSDN博客_linux创建用户 https://blog.csdn.net/sunxx1986/article/details/6854307创建用户、设置密码......