Используя команду в ssh authorized_keys повреждает scp

Если Fibre Channel заставляет Вас съежиться от расхода, можно получить большую часть той же производительности на части стоимости (компонента) при помощи SAS. На 7.2K диски I об/мин смогли вытащить 275 МБ/с из моего для в основном последовательных загрузок, и полагая, что Gigabit Ethernet составляет 125 МБ/с, которых это довольно чинило хороший. Даже случайные записи (те 10 потоков HD, поражающих диск одновременно), были довольно респектабельными на уровне приблизительно 60 МБ/с. Используя более высокие высокопроизводительные диски как 10K или даже 15K об/мин получит Вас более случайная производительность. Если можно предоставить Raid1, Вы не будете иметь дело с издержками четности-calc, которые должны накачать пропускную способность еще больше.

Если Вы использовали внешние диски для этого, я предполагаю, что Вы используете или USB (25MB/s) или возможно ESATA (275MB/s). Если Вы выносили производительность USB, то DroboElite/DroboPro или возможно FS Drobo на GigE должны дать Вам много производительности. Просто обязательно используйте быстрые диски, поскольку случайный ввод-вывод будет вещью, которая принесет все к ее коленям.

Если Вы использовали внешние диски ESATA, то у Вас уже есть ожидание производительности, это довольно высоко. В этом случае серия Drobo не может поддерживать на высоком уровне, просто из-за конкуренции ресурса сетевого уровня если ничто иное. GigE составляет 125 МБ/с, и не требуются многих быстрых устройств записи для насыщения его. В этом случае это могут быть лучшие инвестиции, чтобы взять два или три из них и распределить студентов к единицам по мере необходимости как способ сбалансировать загрузку.

1
задан 28 March 2012 в 00:52
2 ответа

Ваша конфигурация заставляет ssh запускать любую команду из $ SHELL всякий раз, когда вы подключаетесь с совпадающим закрытым ключом. Это нормально, если вам нужна интерактивная оболочка, но это нарушит любую попытку запустить команду напрямую. Это нарушает `scp, как вы видели, но также может нарушить такие вещи, как:

ssh myhost uptime

Решение состоит в том, чтобы либо (а) установить переменные среды в другом месте ( .ssh / rc , либо просто использовать свой стандартные файлы инициализации оболочки) или (б) используйте специальный ключ, если вы хотите принудительно выполнить команду через файл authorized_keys .

4
ответ дан 3 December 2019 в 17:15

Итак, я понимаю, что на данный момент этот вопрос древний, но сегодня я нашел ответ на него. Это альтернатива установке переменных окружения и может быть лучшим решением в зависимости от вашей ситуации. Моя ситуация такова:

У меня есть экземпляр Splunk, который инициирует SCP и SSH сеанс на удаленный хост. Список писем отправляется через SCP, а затем SSH используется для запуска скрипта на удаленной системе для выполнения действий над этим списком писем. Вот верхняя часть моего файла authorized_keys:

command="/home/username/wrapper.sh",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3 etc...

Это мой скрипт wrapper.sh:

#!/bin/bash

vars=( $SSH_ORIGINAL_COMMAND )
case "${vars[0]}" in
        "/home/username/scripts/myscript.py")
                /home/username/scripts/myscript.py ${vars[1]}
                exit 0
                ;;
        "scp")
                scp -t ${vars[2]}
                chmod 644 ${vars[2]}
                exit 0
                ;;
        *)
                exit 1
                ;;
esac

В первом случае разрешается /home/username/scripts/myscript.py с любыми параметрами командной строки, которые ему были переданы. Во втором случае, запись в сценарий scp, позволяет записать входящий файл на диск в нужном месте.

Этот метод позволяет мне ограничить использование публичного ключа командой 1 и все равно разрешить scp. Если у кого-то есть лучшая опция, пожалуйста, поделитесь. :)

.
1
ответ дан 3 December 2019 в 17:15

Теги

Похожие вопросы