当前位置:网站首页 > C++编程 > 正文

ssh免密登录配置sshd_config(ssh免密登录配置不生效)



网上有一些博主写了通过keytab实现ssh免密的demo,krb5的工作原理不再细写,本文仅记录在具体实现时一些关键点。 假设已经搭建好krb5 server。 请先理解以下概念 krb5“主体”:大致可以理解为它是用addprinc添加到数据库的记录。 ticket票据:通过krb5 server认证时,krb5颁发的票据。 krb5.keytab:krb5生成的密钥表文件,里面可以放多个“主体”。

通过krb5的密钥表文件krb5.keytab可以实现ssh免密,以想要免密登录机器:node-server-1为例,以下简称target_server,具体需要如下几点

1、在krb server上创建host主体

-q "addprinc -randkey host/node-server-1"

2、在krb server上将服务主体添加至密钥表文件

-q "ktadd -k /root/node-server-1.keytabhost/node-server-1"

3、将上一步生成.keytab文件,scp至target_server的/etc/krb5.keytab

krb5 client默认使用的密钥表文件为/etc/krb5.keytab,可以通过配置文件/etc/krb5.conf中 [libdefaults] 的 default_keytab_name配置项修改,如default_keytab_name = /etc/node-server-1.keytab

1、/etc/ssh/sshd_config GSSAPIAuthentication yes

2、/etc/ssh/ssh_configGSSAPIAuthentication yes

GSSAPIAuthentication该项必须设置为yes,允许通过GSSAPI认证

3、/etc/ssh/sshd_configGSSAPICleanupCredentials 可选

该项为是否在ssh断开时自动清空票据,可以考虑设置为yes

4、/etc/ssh/ssh_configGSSAPIDelegateCredentials yes

是否forward传递票据到下一级机器,默认为no,所以只可一级免密,如每一级SSH都开启该项,则可以无限跳来跳去(ssh A > ssh B > ssh C > ssh A)

只要当前ssh session里有了有效(未过期的)票据,(不论是用密码/kinit/forward传递得到的票据),都可以免密登录,直到票据过期或被删除

1、kerberos的host主体,仅支持主机名的形式,不支持IP地址(如 host/10.189.1.123),因为krb5 client会用dns去解析这个“主机名”。注:该“主机名”与机器的hostname无关,两者可不相同

2、可使用dns解析或设置/etc/hosts

1、必须先以账号密码的方式登录之后,才会获得krb ticket,才能使用GSS方式登录

2、使用rsa key的方式登录则无法获取ticket,即使可以通过kinit命令获取票据,但kinit仍然需要输入密码

1、生成单用户的密钥表文件

如:kadmin.local -q "ktadd -k /root/username1.keytab username1@your_krb_domain"

注意这一步会导致用户密码被重置,可以通过设置ktadd相关参数,不重置密码。

2、将生成的username1.keytab放于机器target_server上

3、kinit -ktusername1.keytab username1 即可免密获取到票据,原理类似你的账号密码已经被保存至该密钥表文件中。

4、由于此种方式有keytab文件泄露风险,拿到这个文件等价于知道了用户密码,不建议使用。

备注:

1、如用用户username1测试登录时,请勿通过su切换root,切换后就获取不到username1的票据缓存了。

2、ssh登录成功后,命令行直接输入klist命令查看当前的票据。输入kdestroy命令清空当前票据缓存,这一点在测试时较为有用。

到此这篇ssh免密登录配置sshd_config(ssh免密登录配置不生效)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vs怎么用万能头文件(vscode万能头文件)2025-12-05 23:18:07
  • dhclient获取ip(通过dhcpv6获取ip地址)2025-12-05 23:18:07
  • cmake多目录编译(cmake多文件编译)2025-12-05 23:18:07
  • 汽车can报文帧id解析(如何看懂汽车can报文)2025-12-05 23:18:07
  • vconsole什么意思中文(vconsole是什么意思怎么关闭)2025-12-05 23:18:07
  • conv1d原理(conv1d和conv2d)2025-12-05 23:18:07
  • sigmod会议2023(sigmod会议 ccf)2025-12-05 23:18:07
  • linux安装wechat(Linux安装telnet命令)2025-12-05 23:18:07
  • tcpip工具(tcpip工具包)2025-12-05 23:18:07
  • ceph存储是什么意思(ceph存储原理)2025-12-05 23:18:07
  • 全屏图片