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 下面,这样也能实现子用户免密登录目标服务器。

相关推荐
断水客1 小时前
搭建ARM LINUX 内核 QEMU 仿真调试环境
linux·运维·arm开发·嵌入式
fantasy5_51 小时前
深入理解 Linux 动静态库:制作、原理与加载机制
linux·运维·restful
weixin_307779131 小时前
面向通用矩阵乘法(GEMM)负载的GPU建模方法:原理、实现与多场景应用价值
运维·人工智能·线性代数·矩阵·gpu算力
不爱吃糖的程序媛1 小时前
OpenHarmony仓颉文档:全场景应用开发指南
运维·服务器
终端行者1 小时前
Nginx四层负载均衡配置 Stream模块使用
运维·nginx·负载均衡
小程故事多_801 小时前
打破传统桎梏,LLM 让智能运维实现从 “自动化” 到 “自进化”
运维·人工智能·自动化·aigc
oh,huoyuyan1 小时前
火语言 RPA “按住滑块拖动到最右边” 自动化案例
运维·自动化·rpa
龙仔7252 小时前
n2n supernode Linux完整部署笔记,包含离线部署,
linux·运维·笔记·n2n·supernode
深耕AI2 小时前
【wordpress系列教程】07 网站迁移与备份
运维·服务器·前端·数据库
猎人everest2 小时前
Spring Cloud Alibaba 微服务架构拆分api和server的必要性
运维·微服务·架构