Согласитесь с другими, что это произвольный выбор.
if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi
Примечание[116180]: Если ссылка выше не сработает в будущем, то полный проект стиля Google размещен здесь: [116181]Руководства по стилю для проектов с открытым исходным кодом Google | github.com
brew info git
ZSH имеет крючок reexec
, который выполняет функцию перед выполненной командой, введенной в командной линии. Вот крючок, который ищет SSH
в вашей командной строке и, если он найден, проверяет существование агента SSH. Если это не найдено, он запускает брелок.
Таким образом, keychain работает только перед SSH-командами, а затем только при необходимости.
Положите это в ваш ~ / .zshrc
:
function check_ssh {
[[ $3 =~ '\bssh\b' ]] || return
[[ -n "$SSH_AGENT_PID" && -e "/proc/$SSH_AGENT_PID" ]] \
&& ssh-add -l >/dev/null && return
eval `keychain --eval id_dsa --timeout 60`
}
autoload -U add-zsh-hook
add-zsh-hook preexec check_ssh
Что здесь происходит всякий раз, когда команда набирается, Check_SSH
вызывается перед выполнением команды.
Первая строка функции проверяет расширенную команду для SSH
, используя ZSH Regex. SSH
должен иметь границы слова \ b
в обе стороны. Если это не найдено, то функция возвращается.
Следующая строка проверяет, что в переменной среде есть процесс агента SSH, и что этот процесс существует в таблице процессов, а затем добавляли хотя бы один ключ к агенту. Если все это нормально, то SSH-агент устанавливается, и нам не нужно ничего делать, поэтому он возвращает.
Наконец мы начнем брелок с агентом, который должен быть живым в течение часа.
Он по-прежнему покидает проблему о встроенных SSH, таких как Git
или rsync
или SCP
, так как это не запускает функцию (вы можете добавить их на регеекс).
Попробуйте аутентифицировать с ключом SSH. Любая программа, использующая SSH для передачи, автоматически найдет ключ и не нужен пароль.
Просто запустите
ssh-keygen -t rsa -f ~/.ssh/id_rsa
, затем добавьте свой новый ~ / .ssh / id_rsa.pub
на удаленной стороне ~ / .ssh / aperized_keys
файл
ssh USER@REMOTE_HOST 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
, а теперь вы должны Уметь SSH на удаленный хост без пароля.
Это, как правило, является лучшей идеей, чем сохранение вашего пароля в файл, поскольку вы можете использовать этот пароль другие места, и если кто-то нашел его, у вас будут скомпрометированы несколько вещей.