Kozack
@Kozack
Thinking about a11y

Как пушить на github чтобы не вводить каждый раз логин и пароль?

Может нужно как-то аккаунт github настроить или мой git?
  • Вопрос задан
  • 37138 просмотров
Решения вопроса 2
bukinion
@bukinion
Некороткий мануал по SSH + GitHub & BitBucket (на Win, почти тоже и на Lin)

Вначале надо найти ключи
$ ls -al ~/.ssh
# Спискок файлов в директории .ssh, если они есть
# id_rsa.pub # Нам интересны эти два брата, точнее этот публичный код (паб)
# id_rsa # Это для сверки с пабом


Если их нет, то будем генерить, после чего ласково попросят пароль, он должен быть сложным, в конечном итоге вводится он будет только один раз при старте сессии.
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
# Enter passphrase (empty for no passphrase):
# Enter same passphrase again:


Кстати, пароль можно и поменять:
$ ssh-keygen -p # Введете старый, а потом новый.

Консоль выведет следующее:
# Your identification has been saved in /Users/you/.ssh/id_rsa.
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com


Теперь надо добавить ваши ключи в ssh-агент
Удостоверьтесь в том, что он у вас есть — запустите
$ ssh-agent -s

Должен быть следующий однострочный (!) вывод, номер pid будет другим, все остальное от лукавого:
Agent pid 59566

Если нет, то скорее всего в терминале другая оболочка, тогда:
$ eval $(ssh-agent -s)
Agent pid 59566


Вот теперь можно добавить ключи в ssh-агент
$ ssh-add ~/.ssh/id_rsa

Далее, добавим ключи в VCS-сервисы github и bitbucket, для этого скопируйте содержимое id_rsa.pub, и вставьте в настройках своего аккаунта на VCS (например, "SSH and GPG keys" для Github). Активируем ключи.

для github:
$ ssh -T git@github.com

чуть длинней, для bitbucket, вначале надо создать файл-конфиг, ~/.ssh/config, куда добавить следующие строки:
Host bitbucket.org
IdentityFile ~/.ssh/id_rsa # Тут приватный ключ!


После чего запустить следующую команду:
$ ssh -T git@bitbucket.org

В каждом случае, если все пройдет успешно, то вы получите следующие сообщения:
Hi #{username}! You've successfully authenticated, but GitHub does not provide shell access.


или
conq: logged in as tutorials.
You can use git or hg to connect to Bitbucket. Shell access is disabled.


К слову, что Github, что Bitbucket выдали мне в этот раз такое:
Thу authenticity of host 'github.com (192.30.253.113)' can't be established.
RSA key fingerprint is 12:12:12...12.
Are you sure want to conecting (yes/no)?


Ответил yes, консоль что-то ответила и все работает.

Если же вы используете алиасы для хостов, то и активация должна быть через алиас:

$ ssh -T git@alias


Если работаете с Sourcetree (рекомендую для винды), то есть такой момент, что программа не принимает стандартный формат этих ключей и что бы работать с программой через ssh придется из полученного ключа (приватный) сгенерировать их в другом формате понятном putty. Для этого используется программа puttygen. Которая входит в поставку Sourcetree.


Занудно, но уже финал близок, далее нам нужно настроить ~/.bashrc, которого на винде нет, именно он будет содержать инициализационные настройки для консоли и запускать ssh-агент, который будет включать ваши ключи, запоминать сессию:
# Note: ~/.ssh/environment should not be used, as it
#       already has a different purpose in SSH.

env=~/.ssh/agent.env

# Note: Don't bother checking SSH_AGENT_PID. It's not used
#       by SSH itself, and it might even be incorrect
#       (for example, when using agent-forwarding over SSH).

agent_is_running() {
    if [ "$SSH_AUTH_SOCK" ]; then
        # ssh-add returns:
        #   0 = agent running, has keys
        #   1 = agent running, no keys
        #   2 = agent not running
        ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
    else
        false
    fi
}

agent_has_keys() {
    ssh-add -l >/dev/null 2>&1
}

agent_load_env() {
    . "$env" >/dev/null
}

agent_start() {
    (umask 077; ssh-agent >"$env")
    . "$env" >/dev/null
}

if ! agent_is_running; then
    agent_load_env
fi

# if your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

unset env


И снова не финал, скорее всего так как вы не пользовались SSH, то ваши уже существующие локальные репо будут работать по http/https, поэтому надо сменить адреса. Адреса удаленных репозиториев проверяются командой $ git remote -v. Для смены адресов git есть специальная команда: $ set-url, ввести следующее:
$ git remote set-url origin git@github.com:USERNAME/OTHERREPOSITORY.git


Вернуть все на Родину можно аналогично
Ответ написан
Надо сгенерировать на компе ssh ключ и запомнить его на github
https://help.github.com/articles/generating-ssh-keys/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@4ainik
начинал с бейсика на 286 в 1994
линуксоиды настолько суровы что забивают гвозди штангенциркулем :)

вот скрипт на руби который позволяет не вводить каждый раз логин/пароль

f = IO.popen("git push origin master", 'r+')
f.puts ""
f.puts ""
sleep(10)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы