ssh-keygen 做好免密登录后不生效

免密说明

通常情况下,我们ssh到其他服务器需要知道服务器的用户名和密码。对于需要经常登录的服务器每次都输入密码比较麻烦,因此我们可以在两台服务器上做免密登录,即在A服务器可以免密登录B服务器。

在A服务器上登录B服务器时,B服务器需要验证A服务器是否有登录权限,通常是通过用户名密码进行校验,如果没有用户名密码则通过密钥进行校验。因此免密登录其实就是把B服务器的公钥拷贝到A服务器,这样A和B服务器之间就能进行身份验证。

A到B免密认证过程

  • A服务器生成公钥和私钥
  • 把A服务器的公钥发送给B服务器
  • A服务器登录B服务器时携带用户信息,B服务器根据用户名匹配到公钥,生成随机串并用公钥加密传给A服务器
  • A服务器用自己的私钥进行解密,把解密后的随机串发送给B服务器
  • B服务器验证随机串是否正确,如果正确则放行

生成过程

在A服务器执行 ssh-keygen 生成公私钥,执行命令后全部回车即可。执行成功后可以在/root/.ssh下看到下面的文件

复制代码
id_rsa  :私钥
id_rsa.pub:公钥

在A服务器执行 ssh-copy-id -f /root/.ssh/id_rsa.pub root@B,输入B服务器的用户名密码。执行成功后可以在B服务器的 /root/.ssh/authorized_keys 看到A服务器生成的公钥。

之后就可以直接在A服务器上免密登录B服务器了。

注意事项

免密登录是当前用户和目标服务器进行验证,而且每个用户都有自己的公私钥,文件都保存在各自用户的.ssh下,因此需要注意做免密登录时使用的用户。

即如果在root用户下做了免密,那么用root用户是可以免密登录到目标服务器的,但是用其他用户则登录失败。

如果用 apache sshd 则会报 No more authentication methods available 的错误,具体如下:

其他

也可以直接把自己的私钥(id_rsa)拷贝到子用户的 /home/user/.ssh 下面,这样也能实现子用户免密登录目标服务器。

相关推荐
ulias2121 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷2 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简3 小时前
docker 镜像相关
运维·docker·容器
Dream of maid3 小时前
Linux(下)
linux·运维·服务器
齐鲁大虾3 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen4 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…4 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
一叶知秋yyds5 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
斯普信云原生组6 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
safestar20127 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins