Временные сертификаты OpenSSH — это решение, которое я также рекомендую для ваших нужд. Я еще не пробовал это с SFTP.
В основном вы подписываете открытый ключ пользователя закрытым ключом SSH -ЦС, добавляя дополнительные метаданные -, такие как срок действия.
Затем на вашем SFTP-сервере вы сохраняете открытый ключ SSH -CA и ссылаетесь на этот файл с директивой конфигурации TrustedUserCAKeys
. С помощью этого открытого ключа SSH -CA сервер проверяет сертификат OpenSSH пользователя во время входа в систему.Больше не нужно раздавать авторизованные ключи серверам и удалять их по истечении срока действия.
Нет веских причин использовать csh
в этом столетии.
Здесь, однако, я бы сделал:
find. -name runme -type f -execdir chmod +x '{}' ';' -execdir '{}' ';'
Который будет работать в любой оболочке, даже csh
предполагая, что ваш find
поддерживает -execdir
расширение BSD (, очень распространенное в наши дни ).
Что выполняет файлы runme
, но не source
их в текущем экземпляре оболочки. В любом случае, source
ing не требует разрешения на выполнение.
В любом случае нет, ваш код не соответствует синтаксису csh. Но хорошая новость, если вы еще не знаете синтаксиса csh, заключается в том, что вам не нужно его учить, потому что уже как минимум 3 десятка лет известно, что скриптинг в csh вреден и не должен выполняться, поэтому никто не должен ожидая, что вы это сделаете.
Если вам действительно нужно source
csh-файл runme
из скрипта csh, в то время как текущий рабочий каталог временно является родительским для этого файла, код будет больше похож на:
foreach file ("`find. -name runme -type f`")
cd $file:h:q || continue
source $file:t:q
cd - || break
end
Обратите внимание, что это не сработает, если есть runme
файлы, путь которых содержит символы новой строки.