Псевдонимы Bash и волшебство файла конфигурации .ssh!
У вас есть две учетные записи GitHub, но вам нравится работать на одном компьютере? Нужна помощь, чтобы обойти один SSH-ключ для каждой учетной записи GitHub. И как также сообщить вашему компьютеру, какую клавишу использовать при нажатии из командной строки? Нужно изменить свое глобальное имя пользователя или адрес электронной почты на лету? Тогда начнем…
В этом уроке я использую Mac OS. Встроенный редактор командной строки nano, веб-сайт GitHub и все… Ничего подобного, верно?
Порядок работы ниже…
- Создайте новую (вторую) пару ключей SSH, если вы еще этого не сделали. Я предполагаю, что у вас уже есть две учетные записи GitHub и один SSH-ключ…
- Отредактируйте файл .bash_pofile с псевдонимами, чтобы упростить переключение между адресом электронной почты/именем пользователя для разных учетных записей GitHub, которые мы также хотим использовать в командной строке.
- Отредактируйте файл .ssh/config, чтобы управлять ключами и автоматизировать их использование
- Добавление вашего SSH-ключа в ssh-agent для управления паролями, чтобы нам не приходилось запоминать или вводить их каждый раз.
Чтобы начать работу, давайте сгенерируем новый ключ ssh. откройте терминал и введите
ssh-keygen
Сохраните его в каталоге по умолчанию и создайте пароль. Добавьте открытый ключ в свою учетную запись Github. Переходим ко второму шагу… Нас ждут псевдонимы Bash. Перейдите к вашему .bash_profile, поскольку мы используем редактор nano, введя команду.
nano .bash_profile
Теперь вставьте код ниже… Если вы используете одно и то же имя для обеих учетных записей Github, вы можете пропустить часть имени и просто создать псевдоним для электронных писем… Потому что у вас может быть только одно электронное письмо для каждой учетной записи. Измените, чтобы соответствовать вашей информации.
alias gitworkname = 'git config --global user.name "UserName-Work"' alias gitworkemail = 'git config user.email [email protected]' alias githomename = 'git config --global user.name "UserName-home"' alias githomeemail = 'git config user.email [email protected]'
Нажмите X, чтобы выйти, а затем нажмите Y, чтобы сохранить файл. Так что теперь, когда вы клонируете или создаете новый репозиторий, просто не забудьте cd войти в проект и запустить либо домашний, либо рабочий псевдоним той учетной записи, для которой вы также хотите использовать кодовую базу. Итак, на лету мы можем изменить наше глобальное имя пользователя и адрес электронной почты…
Перейдите в свой каталог, в котором вы только что сохранили файл ключа ssh (должен быть вашим домашним каталогом, когда вы впервые открываете терминал, и cd .ssh это скрытый файл, который не будет отображаться с помощью ls). Введите ls, чтобы просмотреть содержимое папки .ssh. Если у вас нет файла конфигурации, создайте его с помощью команды touch config. Теперь приступим к процессу автоматизации, отредактируем файл конфигурации встроенным редактором nano.
nano config
Теперь добавим следующий код… Обязательно измените имя файла, которое вы сделали для рабочего и домашнего SSH-ключей. Остальное может остаться прежним.
# My Personal GitHub: Host personal-github.com HostName github.com User git UseKeychain yes IdentityFile ~/.ssh/id_rsa_personal //change to your file name PreferredAuthentications publickey PasswordAuthentication no IdentitiesOnly yes # My Work GitHub: Host moneymaker-github.com HostName github.com User git UseKeychain yes IdentityFile ~/.ssh/id_rsa_work // change to your file name PreferredAuthentications publickey PasswordAuthentication no IdentitiesOnly yes
Хорошо, хорошая работа! Теперь я объясню... Итак, мы просто придумали собственное имя хоста. Потому что, когда мы запускаем ssh и запускаем git clone или git remote, добавляем новый репозиторий из командной строки, все, что нам нужно сделать, это вручную добавить этот префикс, чтобы сообщить компьютеру, какой ключ ssh использовать!! Пример:
git clone git@personal-github.com:FloridaBlue.gitORgit clone git@moneymaker-github.com:FloridaBlue.git
Компьютер проверяет файл .ssh/config и видит созданный нами фальшивый путь, и использует нашу новую настройку для этого маршрута… Отличная работа, ребята, переходим к последнему разделу.
Управление паролями… Последняя часть может быть немного сложной в зависимости от используемой вами Mac OS, поэтому я включил несколько способов сделать это. Не бойтесь, мы добавим пароли в связку ключей и готово! Я использую MacBook pro-2018 после macOS Sierra 10.12.2. Просто чтобы дать вам ссылку.
в командной строке запустить ssh-agent
eval "$(ssh-agent -s)"
затем вернитесь к файлу .ssh/config, добавьте вверху и сохраните
Host *
AddKeysToAgent yes
UseKeychain yes
далее назад в командной строке добавить
ssh-add -K ~/.ssh/id_rsa_personal
Независимо от того, какую версию ОС вы используете, теперь она сохранит ее в вашей цепочке для ключей. ssh в каждую из моих учетных записей и счастливого взлома КОНЕЦ…
Мой сайт jskings.com
Мой YouTube jsKings
Ссылки ниже на других, которые помогли мне собрать всю эту информацию для вас в одном месте…