有没有办法将所有现有的 ssh key 从/root/.ssh/authorized_keys 自动导入 puppet?例子:
如果我在/root/.ssh/ssh_authorized_keys 中有以下内容:
ssh-rsa AAAAakljsehrkjysdfjkhasdkfhskjghg== userA@hostA
ssh-rsa AAAAajklrkljeykljrsyehkrjryekjdkj== userB@hostB
puppet resource ssh_authorized_key
ssh_authorized_key {'userA':
ensure => present,
key => 'AAAAakljsehrkjysdfjkhasdkfhskjghg==',
type => 'ssh-rsa',
name => 'userA@hostA',
user => 'root',
}
ssh_authorized_key {'userB':
ensure => present,
key => 'AAAAajklrkljeykljrsyehkrjryekjdkj==',
type => 'ssh-rsa',
name => 'userB@hostB',
user => 'root',
}
最佳答案
这可能有点矫枉过正,但你可以运行 blueprint并获取所需的部分,或者一个简单的 bash 脚本:
while read line; do
keytype=$(echo $line | awk '{print $1}');
keystr=$(echo $line | awk '{print $2}');
username=$(echo $line | awk '{print $3}');
echo "ssh_authorized_key {'$(echo $username | awk -F'@' '{print $1}')':";
echo " ensure => present,";
echo " key => '$keystr',";
echo " type => '$keytype',";
echo " name => '$username',";
echo " user => '$(whoami)',";
echo "}";
done < .ssh/authorized_keys
https://stackoverflow.com/questions/14808513/