概述
SSH免密登录是一种通过公钥和私钥对的方式来进行安全认证的机制,允许用户无需每次输入密码就能通过SSH远程登录到服务器。
从表现上看,SSH免密登录让用户可以在客户端通过SSH登录远程服务器时无需输入密码。用户只需一次性配置公钥和私钥对,以后每次连接都会直接成功登录,极大简化了身份验证的过程。
实际原理上来看,SSH免密登录基于非对称加密。客户端生成一对公钥和私钥,公钥存放在服务器上,私钥保存在客户端。登录时,服务器使用公钥验证客户端私钥的签名,而私钥只在客户端本地使用,不传输网络。
从网络安全角度来看,可以对目标Linux系统主机中的 /etc/passwd
和 /etc/shadow
这两个文件不进行修改的情况下(不新增用户和修改现有用户密码),通过SSH免密登录留下用户登录后门。
正文
环境说明
目标Linux主机 - 目的:被配置免密SSH登录的Linux机器
- 任意Linux / Windows终端主机
- 目的:用于生成免密登录所需的密钥对
- 本文以Linux终端为例
教程笔记
首先在终端主机上(想要进行免密登录的计算机)生成密钥对,该密钥对包含公钥(public key)和私钥(private key)
使用下面的命令生成密钥对,-t 参数指定生成RSA加密的秘钥对。有选项一直回车即可,生成完毕后会在当前用户家目录的 .ssh
文件夹( ~/.ssh/
)下面生成两个文件:公钥 -> id_rsa.pub
和 私钥 -> id_rsa
将 私钥 -> id_rsa
自己保存备用(不可泄露,相当于密码)
ssh-keygen -t rsa
接下来将公钥 -> id_rsa.pub
传输到目标主机
(被配置免密SSH登录的Linux机器),这里可以用两种办法进行传输到目标主机。
一、命令传输
在终端主机上使用命令:ssh-copy-id <user>@<server ip>
,需要将<user>替换为目标主机可登录的用户名和<server ip>替换为目标主机IP,即可将本机生成的公钥文件id_rsa.pub传输到目标主机
二、手动方法
将终端主机的公钥
下载或者复制下来,然后将公钥内容复制到目标主机的 家目录/.ssh/authorized_keys
文件中(免密登录哪个用户就放哪个用户的家目录)
接下来验证登录,在终端主机上使用命令:ssh -i <私钥路径> <user>@<server ip>
来进行登录,可以发现不需要密码,只要有正确的私钥即可进行登录。
总结
SSH免密登录通过公钥-私钥机制代替密码验证,提供了更方便的远程登录方式,同时也能提升安全性。
但是如果被黑客恶意留下登录后门,这种方式也是十分隐匿的,在排查登录后门的时候也要进行排查一下被登录的用户有没有下面这个私钥文件:家目录/.ssh/authorized_keys
- 最新
- 最热
只看作者