Если Вы не хотите решения для патча, вот другое обходное решение:
В sshd_config:
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp /usr/local/bin/sftpwrapper
# And the Match Group, ChrootDirectory, etc... declarations
И в/usr/local/bin/sftpwrapper (chmod 755, показанный root:root)
#!/bin/bash --
umask 0002
exec /usr/lib/openssh/sftp-server
Пользователи в chrooted группе, может все еще иметь/bin/false как оболочку.
Я подумал о том, чтобы как-то переместить ключи для этих хостов в hiera или что-то еще, но я не нашел решения, которое не уродливо.
Есть несколько способов добиться этого. Я стараюсь, чтобы мои классы были общими, со всеми данными конфигурации в hiera. Когда я имею дело с коллекциями данных, я пытаюсь использовать хэш hiera, таким образом мне никогда не придется изменять свой класс или определять код.
1: Используйте хеш hiera для хранения коллекции ключи.
hiera_key_hash:
key-1:
name: cisco500
type: router
key: xxx
key-2:
name: cisco100
type: switch
key: xxx
2: Создайте класс , который вызывает create_resource для каждого ключа (он будет вызывать определение «ключ»).
class keys {
create_resources( "key", hiera('hiera_key_hash') )
}
3: Создайте определение , которое выполняет работа для каждого ключа.
define key($name, $type, $key) {
// code goes here
}
Примечание: на каком-то этапе вы можете в конечном итоге сохранить конфиденциальную информацию в своей иерархии. Возможно, вы захотите зашифровать некоторые важные для вас значения.
Хм ... может быть, в Хиере, с hiera_array
, собирающим данные, подающим этот массив в ресурсы через определенный тип? Поскольку вам нужны имя хоста и ключ, вам нужно либо поместить их в строку и split ()
в определенный тип, либо иметь в массиве что-то более сложное (возможно, хеш) .
По-прежнему головная боль - управлять его заполнением и поддерживать его в актуальном состоянии; Может быть, небольшой скрипт со списком узлов для подключения, сбора ключей и генерации данных иерархии?