Псевдонимы Bash и волшебство файла конфигурации .ssh!

У вас есть две учетные записи GitHub, но вам нравится работать на одном компьютере? Нужна помощь, чтобы обойти один SSH-ключ для каждой учетной записи GitHub. И как также сообщить вашему компьютеру, какую клавишу использовать при нажатии из командной строки? Нужно изменить свое глобальное имя пользователя или адрес электронной почты на лету? Тогда начнем…

В этом уроке я использую Mac OS. Встроенный редактор командной строки nano, веб-сайт GitHub и все… Ничего подобного, верно?

Порядок работы ниже…

  1. Создайте новую (вторую) пару ключей SSH, если вы еще этого не сделали. Я предполагаю, что у вас уже есть две учетные записи GitHub и один SSH-ключ…
  2. Отредактируйте файл .bash_pofile с псевдонимами, чтобы упростить переключение между адресом электронной почты/именем пользователя для разных учетных записей GitHub, которые мы также хотим использовать в командной строке.
  3. Отредактируйте файл .ssh/config, чтобы управлять ключами и автоматизировать их использование
  4. Добавление вашего 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.git
OR
git 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

Ссылки ниже на других, которые помогли мне собрать всю эту информацию для вас в одном месте…