sshd的AuthorizedKeysCommand选项

通常机器上保存的key都是读取~/.ssh/authorized_keys文件来获取的,这样的话就不好做到动态调整和控制权限.

openssh6.2版本以上新增加了AuthorizedKeysCommand选项功能,可以获取动态keys列表


Port 22
Protocol 2
SyslogFacility AUTH
LogLevel INFO

#PermitRootLogin no

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

# Change to no to disable s/key passwords
ChallengeResponseAuthentication no

UsePAM yes

AllowTcpForwarding no
X11UseLocalhost no
UseDNS no
Subsystem       sftp    /usr/libexec/openssh/sftp-server

AuthorizedKeysCommand /etc/get_key.sh
AuthorizedKeysCommandUser root

一个典型的sshd配置如上,其中AuthorizedKeysCommand选项的作用是在每次登录时都调用指定的脚本,并以脚本当前的输出作为keys列表.当脚本的输出为空时,再调用本地authorized_keys文件中的keys列表验证.

一个典型的使用方式是,将ssh公钥放在一个统一的鉴权服务器上,与cmdb中的服务器资源列表做匹配,通过http restapi返回服务器允许登录的公钥列表,在服务器上通过get_key.sh进行读取.当读取为空时,使用本地authorized_keys,一般为权限用户.

这样就可以很好的实现服务器授权,组授权以及跳板机相关功能.(本地key转发通过跳板机连接服务器的情况,就可以做到权限集中与鉴权了)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注