Это вызвано тем, что то, что Вы хотите, должно передать литеральную пустую строку curl
, но то, что Вы получаете, является рядом литеральных кавычек, так как они уже заключаются в кавычки. Контрольные точки другому, который просто рекомендует использовать функцию:
download(){
curl http://somepage "$@"
}
download -x ''
Если Вы хотите наблюдать то, что на самом деле делает Ваш сценарий, попытайтесь работать set -x
перед ним.
Ваша оболочка предназначена для оценки того кода оболочки, произведенного ssh-agent
. Выполните это вместо этого:
eval "$(ssh-agent)"
Или если Вы уже запустили ssh-агент, скопируйте, вставляют его к Вашему приглашению оболочки (предполагающий, что Вы выполняете подобную Границе оболочку).
ssh
команды должны знать, как говорить ssh-agent
, они знают это от SSH_AUTH_SOCK
переменная среды.
ssh-agent /usr/bin/fish
.
– slackmart
29.03.2016, 21:17
/usr/local/bin/fish
(альтернативно /usr/ports/shells/fish
). Благодарите whereis
команда для помощи мне понять это.
– cjm
26.08.2016, 07:28
При использовании csh как оболочка (FreeBSD PI) это могло работать:
eval `ssh-agent -c`
затем только необходимо сделать что-то как:
ssh-add ~/.ssh/id_rsa
Этот вопрос также очень хорошо освещен в Stackoverflow .
eval `ssh-agent -s`
ssh-add
Попробуй это:
перейдите по ссылке C:\$Installation_Folder$\Git\cmd
.
и выполнит:
start-ssh-agent
Откроет команду cmd и запустит ssh-agent
в правильном направлении. Затем должен сработать
ssh-add ~/.ssh/id_rsa
.
Вы также можете использовать следующий синтаксис:
ssh-agent sh -c 'ssh-add && echo Do some stuff here.'
Это запутало, и имеет 2 возможных правильных ответа, в зависимости от того, пытается ли пользователь добавить ключ ssh на Linux или на Windows (как я). Возможно, это не ответ на вопрос OP, но это расширение для git-bash. Я использую как Windows, так и Ubuntu для разработки, и моя установка git немного отличается в каждой из них.
Попробуйте следующее: зайдите в C:\$Installation_Folder$\Git\cmd и выполните:
start-ssh-agent Это откроет команду cmd и запустит ssh-agent правильным способом. правильным способом.
... был хорошим ответом Windows, но в нем не было указано, что вы должны были пройти через проводник Windows, чтобы найти папку установки Git, и запустить оболочку Windows, которая откроется по завершении шага 1.
"go to C:\$Installation_Folder$\Git\cmd"
Шаг 2: вам просто нужно дважды щелкнуть
start-ssh-agent
На шаге 3 вы возвращаетесь в git-bash или любой другой эмулятор терминала *nix и запускаете ssh-add. Если вы использовали имя по умолчанию для открытого ключа ssh, вам не нужно добавлять имя, так как ssh-add использует его автоматически.
Есть несколько способов, если вы хотите использовать идентификатор в sudo,
например, sudo npm install
.
Длинный путь, но также дает вам root-доступ, так что вам не придется часто использовать sudo
.
sudo ssh-agent bash
ssh-agent
с привилегиями суперпользователя, cd /home/user/.ssh
Оттуда вы можете выполнить
ssh-add id_rsa
npm install git+ssh://git@YOUR-PROJECT-URL -g && npm link PROJECT-NAME
Короткий путь, только ваш пользователь (если вы не хотите часто использовать sudo)
eval "$(ssh-agent)"
ssh-add
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install git+ssh://git@PROJECT-URL -g && sudo npm link PROJECT-NAME
Самое простое решение не обязательно должно быть плохим.
Вам не нужны ни ssh-agent
, ни ssh-add
, если вы используете секретный ключ без пароля, см. https://stackoverflow.com/a/48290333/11154841.
Благодаря этому я избавился от ошибки Could not open a connection to your authentication agent. ssh-add exit code 2
.
Это не обязательно должно быть небезопасно. :Вам просто нужно удалить оба ключа пары ключей сразу после их использования. Это означает, что вы должны удалить открытый ключ на сервере и удалить закрытый ключ на клиенте. Само собой :никогда их больше не используйте, даже не сохраняйте где-нибудь резервную копию.
Имейте в виду, что вы можете создать открытый ключ из закрытого ключа, но не наоборот. Обычно достаточно просто удалить открытый ключ из зарегистрированных ключей на вашем портале Git, но лучше удалить оба, чтобы один и тот же открытый ключ больше никогда не использовался. Даже если кто-то украл ваш закрытый ключ, от этого будет бесполезно, если вы просто никогда больше не будете использовать его открытый ключ.
С закрытым ключом без пароля вы даже можете использовать его в Docker, чтобы обойти любые вводы пароля. Вы можете клонировать репозиторий git без пароля,закрытый ключ без пароля — это все, что вам нужно. См. Dockerfile :клон репозитория с закрытым ключом без пароля. Например, ошибки :«агент аутентификации» или «чтение _фразы-пароля :не могут открыть /dev/tty» .
ssh-agent bash
делает), но это не может обновить память отдельного процесса, выполняющего внешнюю команду (Ваша уже рабочая оболочка). – Stéphane Chazelas 07.10.2013, 12:03