Есть ли способ передать содержимое закрытого ключа непосредственно в scp
вместо того, чтобы копировать ее в файл и указывать на нее через -i /path/to/key.pem
вариант?
Итак, вместо того, чтобы делать:
scp -i key.pem source target
Могу я сделать что-то вроде следующего?
scp -i '-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAMIIEowIBAA...\n' source target
Конечно, я пробовал это, и это не сработало, но, возможно, этого можно добиться с помощью конвейера BASH, перенаправления вывода или чего-то в этом роде.
Причина, по которой мне нужно это сделать, заключается в том, что я не могу хранить ключи в файловой системе (это очень длинная и скучная история), и эту команду нужно будет выполнять миллионы и миллионы раз с разными ключами каждый раз, поэтому дополнительные дисковый ввод-вывод будет иметь большое значение в наших результатах.
если ты не могу раскрывать больше информации мы действительно не можем вам помочь: вопросы о сбое сервера должны предоставлять нам достаточный контекст для разумного анализа проблемы, а этот - нет.
Что я могу сказать вам определенно, так это то, что «передача ключа в командной строке» - плохая идея: если вы сделаете это, вы унаследуете все проблемы, обсуждаемые в этот вопрос что в основном означает любой на машине может видеть ваш закрытый ключ. (Вот почему ssh
, scp
, и sftp
команды не позволяют вам этого делать.)
Рассмотрите возможность использования ssh-agent
вместо этого для обработки ваших ключей - здесь есть некоторые дополнительные последствия, но вы можете в основном хранить свои ключи в файловой системе, загружать их в агент, а затем разрешить агенту передавать ключи клиенту для целей аутентификации (что должно решить, или хотя бы уменьшить ваши проблемы с производительностью).
Если ssh-agent
не подходит для ваших нужд, вам придется взломать и перекомпилировать SSH-клиент для поддержки того, что вы хотите каким-то образом.
Если вам абсолютно необходимо указать файл в командной строке, вы можете загрузить такой файл:
echo -ne '-----BEGIN ...\n' | ssh target_host "cat > ~/.ssh/authorized_keys"
В -n
опция эха подавляет завершающуюся новую строку. В -e
опция расширяет escape-символы, такие как \n
. Если вы хотите добавить к файлу вместо его замены, вы можете использовать >>
вместо того >
.