通过密钥SSH远程监控Linux

简介: 目前远程监控Linux的连接方式是SSH、SNMP、Telnet,最常见的方式是通过SSH,由于安全考虑,实际用户环境很多情况是需要通过SSH公共/私有密钥的方式连接Linux系统,而且还禁止root用户连接。
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/80827839

目前远程监控Linux的连接方式是SSH、SNMP、Telnet,最常见的方式是通过SSH,由于安全考虑,实际用户环境很多情况是需要通过SSH公共/私有密钥的方式连接Linux系统,而且还禁止root用户连接。所以掌握这块的技巧很有必要,只要回避几个容易踩坑的地方就能轻松实现。

(请持续关注smooth的博客:https://blog.csdn.net/smooth00)

1、生成密钥对

网上对于制作密钥的方式五花八门,其实很简单,就是分为linux下产生密钥,还是Windows下产生密钥,无论哪种只要密钥格式符合标准,就能通用(拷贝到任何一台Linux机上都能正常使用)。

(1)Linux下产生密钥对的方式(以RSA密钥为例,默认长度2048):

ssh-keygen -t rsa

如果不配置密钥密语的话(建议配一下),一路回车就能在当前用户目录(如/root/)的.ssh子目录下产生


进入用户目录的.ssh(root用户为/root/.ssh,其他用户/home/{username}/.ssh)目录下就能看到密钥文件id_rsa和id_rsa.pub,前者为私钥(需放在客户端-监控机,待用),后者为公钥(需传到服务端-被监控机,一般通过scp或sftp的方式传输)。

(2)Windows下产生密钥对的方式(以RSA为例)

Windows下可以借助SSH连接工具,来制造密钥对,比如用SecureCRT:

点击Tools-->Create Public Key,【下一步】,选择RSA


再【下一步】,如果密语需要设置的话,在Passphrase和Confirm填上密语(这样密钥就加密了,不知道密码无法使用)


一直【下一步】,最后以下配置,点击【完成】


最后在以上指定目录下,产生两个文件Identity和Identity.pub,前者为私钥(放在客户端-监控机,待用),后者为公钥(传到服务端-被监控机,待用)。

2、配置公钥

我们需要把以上产生的公钥文件,如id_rsa.pub传到被监控机(服务端)上,root用户放在/root/.ssh下,普通用户放在/home/{username}/.ssh下,如果没有.ssh目录,就mkdir创建(以对应用户创建)。进入文件目录,执行以下命令(要以对应用户执行命令,因为不同用户下~/所对应的主目录不一样):

cat id_rsa.pub >> ~/.ssh/authorized_keys

然后给相关文件和目录赋予权限(也得以相应用户执行命令,否则权限指向的用户范围可能就错了):

$ chmod 700 ~/.ssh

$ chmod 600 ~/.ssh/authorized_keys

为了避免SELinux的配置规则不符合要求,执行以下命令(这一步非必须的):

$ restorecon -Rv ~/.ssh

这样基本上就满足要求了,网上有说还需要修改/etc/ssh/sshd_config里的配置,我建议用户环境的配置就别乱动了(而且这也是需要有root权限才能配置),但是如果出现一种情况,就是普通用户被提权为root了,这样默认路径就会找不到密钥文件authorized_keys,如下所示,test用户的权限配置成0:0,这说明test用户就成了root用户了。


那么/etc/ssh/sshd_config按如下的默认配置,会导致test用户连接时去root用户目录下找authorized_keys文件,就会导致密钥认证不通过。


应该改为(加上~/):


以上这种算是极端情况,也是我碰到的一个坑,正常情况下普通用户是不会被提权成root用户的。

3、使用私钥

配置完公钥,私钥就可以直接用了,以下举例私钥的使用场景:

(1)场景一:在Spotlight(Dell的一款性能监控工具)中配置


主要是用户(该工具禁止用root连接)、SSH键类型、SSH私钥文件路径、SSH密语(看你生成密钥对的时候是否配置),这样就能完成密钥配对,实现远程连接监控。

(2)场景二:在Applications Manager(Zoho的一款分布式监控系统)


加密密钥直接用记事本打开id_rsa或Identity私钥文件,将密钥串整个复制上去就行,测试凭证通过就表示连接成功。

(3)场景三:用SecureCRT远程连接Linux

将SSH2配置的Authentication只保留PublicKey,其他勾选项去掉:


配置Properties,将密钥文件目录配好就行


点击连接就能成功登录linux,而且是不用输入密码,直接登录(第一次登录会提示下载公钥授权)


4、常见问题

(1)配好密钥登录了,但还是提示需要输入用户密码,碰到这种情况说明你其实并不是通过密钥登录,因为SSH连接,可能优先通过Password方式登录,登录失败才从会考虑通过PublicKey方式登录。所以你需要先禁用Password方式登录(通过/etc/ssh/sshd_config配置)或是SecureCRT等工具连接时不勾选Password Authentication。

(2)连接时报密钥认证不通过(Permission denied),这种情况最常见,一般会有三种原因引起,一是~/.ssh和~/.ssh/authorized_keys的用户权限不够,二是authorized_keys的不能被正常访问(比如路径问题引起,如上面提到的普通用户提权成root),三是SELinux的配置问题(上面以提供方法)。

5、SSH免密访问的原理

  • 这种方式你需要在客户端服务器上为自己创建一对密,并把公放在需要登录的服务器上。
  • 当你要连接到服务器上时,客户端就会向服务器请求使用密进行安全验证。
  • 服务器收到请求之后,会在该服务器上你所请求登录的用户的home目录下寻找你的公钥。
  • 然后与你发送过来的公进行比较。
  • 如果两个密一致,服务器就用该公加密“质询”并把它发送给客户端。
  • 客户端收到“质询”之后用自己的私解密再把它发送给服务器。
目录
相关文章
|
15天前
|
Web App开发 存储 Linux
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
Linux(33)Rockchip RK3568 Ubuntu22.04上通过SSH运行Qt程序和关闭Chrome的密钥提示
53 0
|
16天前
|
Linux 网络安全 数据安全/隐私保护
SSH工具连接远程服务器或者本地Linux系统
SSH工具连接远程服务器或者本地Linux系统
18 0
|
4天前
|
存储 安全 Linux
|
10天前
|
弹性计算 算法 Shell
非交互自动生成 SSH 密钥文件
【4月更文挑战第28天】
17 0
|
10天前
|
监控 安全 Linux
【专栏】害怕 Linux SSH 不安全?这几个小妙招安排上!
【4月更文挑战第28天】在数字化时代,Linux SSH 的安全对于远程管理至关重要。增强 SSH 安全包括:使用强密码,调整 SSH 配置文件,尤其是端口号和认证方式;采用密钥认证代替密码;限制登录用户,禁止密码登录;使用防火墙限制访问;定期更新系统和软件。此外,通过日志监控、入侵检测系统及及时应对攻击来提升安全监控。保持对安全知识的学习和更新,结合最佳实践,是保障 SSH 安全的关键。记得安全是个持续过程,时刻保持警惕!
|
16天前
|
Linux 网络安全
Linux(16)ssh_exchange_identification: read: Connection reset by peer问题
Linux(16)ssh_exchange_identification: read: Connection reset by peer问题
19 0
|
2天前
|
安全 Linux 网络安全
|
9天前
|
弹性计算 运维 Shell
非交互自动生成SSH 密钥文件
【4月更文挑战第29天】
5 0
|
14天前
|
安全 Unix Linux
基于MobaXterm工具的Linux远程SSH登录
本文介绍了如何使用 MobaXterm 进行 Linux 远程登录。首先,从官方网站下载并安装 MobaXterm。启动后,创建新的远程会话,选择 SSH 类型,输入服务器 IP、主机名和端口。接着,提供用户名和密码进行连接。成功后,即可使用远程终端执行命令。此外,文章还提到了其他常用的 Linux 远程登录工具,如 PuTTY、OpenSSH、SecureCRT 和 Xshell,强调了选择工具时应考虑个人偏好和安全需求。
|
19天前
|
网络协议 安全 Linux
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器