มีสองขั้นตอนในการจัดเตรียมฟังก์ชันนี้ ขั้นแรก รับค่าของพารามิเตอร์ อาจมีตัวเลือกมากกว่านี้ เช่น โดยค่าเริ่มต้น
เปลือก> sudo sshd -T | grep อนุญาตไฟล์คีย์
ไฟล์ Authorizedkeys .ssh/authorized_keys .ssh/authorized_keys2
ตัวอย่างเช่น รับอันแรก
- เชลล์: sshd -T | grep อนุญาตไฟล์คีย์
ลงทะเบียน: ผลลัพธ์
กลายเป็น: จริง
- set_fact:
AuthorizedKeysFile: "{{ (result.stdout|split)[1] }}"
ให้
AuthorizedKeysFile: .ssh/authorized_keys
อาจมีพารามิเตอร์ AuthorizedKeysFile %ยู
และ %ชม
. ดู ตำแหน่งของไฟล์คีย์ที่ได้รับอนุญาต
%h จะถูกแทนที่ด้วยโฮมไดเร็กทอรีของผู้ใช้ที่ตรวจสอบสิทธิ์ และ %u ด้วยชื่อล็อกอินของผู้ใช้
เตรียมฐานข้อมูลของโฮมไดเร็กตอรี่
- รับ:
ฐานข้อมูล: passwd
ตามค่าเริ่มต้น โมดูล รับ เก็บฐานข้อมูล รหัสผ่าน ในพจนานุกรม getent_passwd. บ้านเป็นแอตทริบิวต์ที่ 4 เช่น
- แก้ปัญหา:
var: getent_passwd['รูท'][4]
ให้
getent_passwd['รูท'][4]: /รูท
ตอนนี้ได้รับข้อมูล
auth_keys:
รูท: [key1, key2, key3]
คุณสามารถทดสอบการทำงาน
- เชลล์: sshd -T | grep อนุญาตไฟล์คีย์
ลงทะเบียน: ผลลัพธ์
กลายเป็น: จริง
- set_fact:
AuthorizedKeysFile: "{{ (result.stdout|split)[1] }}"
- รับ:
ฐานข้อมูล: passwd
- แก้ปัญหา:
ข้อความ: |
เส้นทาง: {{ _path }}
คีย์: {{ item.value }}
วนซ้ำ: "{{ auth_keys|dict2items }}"
วาร์:
_user: "{{ item.key }}"
_home: "{{ getent_passwd[item.key][4] }}"
_akf: "{{ AuthorizedKeysFile|regex_replace('%u', _user)|
regex_replace('%h', _home) }}"
_path: "{{ (_akf.0 == '/')|ternary(_akf, [_home, _akf]|join('/')) }}"
ให้
ข้อความ: |-
เส้นทาง: /root/.ssh/authorized_keys
คีย์: ['key1', 'key2', 'key3']
หากคุณเปลี่ยนพารามิเตอร์
เปลือก> sudo sshd -T | grep อนุญาตไฟล์คีย์
authorizedkeysfile /etc/ssh/authorized_keys/%u
การเล่นจะได้รับตำแหน่งที่ถูกต้องของไฟล์คีย์ที่ได้รับอนุญาต
ข้อความ: |-
เส้นทาง: /etc/ssh/authorized_keys/root
คีย์: ['key1', 'key2', 'key3']