-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgithub - use SSH key.txt
210 lines (144 loc) · 12.6 KB
/
github - use SSH key.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
https://sergeyvasin.net/2017/03/30/git-ssh/
*Подключение Git Bash к GitHub.com с использованием SSH
30 марта, 2017Сергей Васин
Эта статья подразумевает, что у вас уже есть учетная запись на github.com,
вы скачали и установили Git Bash с сайта git-scm.com
и теперь хотите работать со своими репозиториями, используя SSH.
Собственно о том, как настроить этот самый SSH и пойдет речь в этой статье.
Но сначала о том, что особенного в этом методе подключения.
Подключение с использованием SSH подразумевает генерацию пары ключей,
добавление этих ключей к SSH-агенту, при помощи которого и будет происходит взаимодействие,
а также добавление открытого ключа к своему аккаунту на github.com.
Использование SSH избавляет вас от необходимости использовать имя и пароль,
так как вместо этого используется пара ключей — открытый и закрытый (public and private),
однако в целях безопасности закрытый ключ должен быть зашифрован при помощи пароля.
*Для начала, проверим нет ли у нас каких либо уже существующих ключей.
Запустим Git Bash и введем команду
ls -al ~/.ssh
Этой командой мы получаем список файлов из папки .ssh, находящейся в профиле текущего пользователя —
~. Если вы там обнаружите что-то вроде id_rsa и id_rsa.pub, то,
возможно, ключ у вас уже есть, и если вместо генерации новых вы решите использовать существующий,
то можете сразу переходить к шагу добавления ключей к ssh-агенту.
Мы же тут сделаем вид, что никаких ключей у нас нет и приступим к их генерации.
*Генерируем ключи
Для генерации новой пары ключей в консоли git bash введите следующую команду:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
В этой команде параметр -t задает тип, в данном случае мы используем rsa.
Параметр -b задает длину ключа, 4096 выглядит вполне подходящим значением.
Параметр -C задает комментарий к генерируемым ключам, в котором мы указываем свой email адрес.
Git bash сообщит что происходит генерация ключа, а после попросит указать место
сохранения файлов с ключами.
Мы можем либо нажать Enter и согласиться с местоположением и именем
по умолчанию: ~/.ssh/id_rsa и ~/.ssh/id_rsa.pub, либо указать свой вариант.
*Добавляем ключи к ssh-агенту
Теперь нам нужно добавить сгенерированные ключи к ssh-агенту.
Тут есть интересная вещь, если у вас установлен Git Desktop,
то вы можете управлять репозиториями через него и не обращать внимания на то, о чем мы тут говорим.
Однако же, управление Git через консоль с помощью какой либо утилиты, вроде Git for Windows,
о чем мы здесь и рассуждаем, является более предпочтительным методом,
поэтому стоит обратить внимание на вопросы запуска ssh-агента.
Далее в статье мы рассмотрим, как настроить его автоматический запуск,
сейчас же мы запустим его вручную, командой:
eval $(ssh-agent -s)
*Теперь нам нужно добавить созданные ключи к ssh-агенту. Сделаем мы это командой:
$ ssh-add ~/.ssh/id_rsa
В данном случае мы указали местоположение по-умолчанию.
Именно в этом файле будут находиться ключи в случае,
если на вопрос о месте сохранения файлов ключей при их генерации
вы приняли значение по-умолчанию, нажав Enter.
Если вы указали некоторое отличное от значения по-умолчанию местоположение,
то в качестве аргумента вы просто указываете нужный путь и имя файла.
*Добавление ключа к вашей учетной записи на GitHub.com
Итак, что мы имеем.
Мы сгенерировали пару ключей, ссобщили об их местонахождении ssh-агенту.
Теперь же нам нужно также сообщить сайту GitHub.com об их существовании.
Точнее о существовании открытого ключа из созданной нами пары.
Для этого сначала получим значение открытого ключа при помощи следующей команды:
clip < ~/.ssh/id_rsa.pub
Эта команда копирует содержимое файла открытого ключа
(опять же из расположения по-умолчанию) в буфер обмена.
Этого же результата мы можем достичь, открыв вышеупомянутый файл в каком-либо текстовом редакторе
и скопировав его содержимое.
Далее заходим на сайт GitHub.com под своей учетной записью и,
щелкнув на своем аватаре, выбираем Settings.
В меню, расположенном в левой части, выбираем SSH and GPG keys и нажимаем New SSH key.
Заполняем поле Title, для того, чтобы нам самим было понятнее, что это за ключ,
вставляем содержимое файла открытого ключа из буфера в поле Key и нажимаем Add SSH key.
*Проверка SSH-соединения
Теперь давайте проверим ssh-соединение. Для этого в консоли Git Bash введем команду:
ssh -T [email protected]
При этом вы получите просьбу ввести пароль шифрования закрытого ключа.
(у ssh -T [email protected] , может так красиво не получится, переходим сразу к "Добавить доступ удаленный" к репозитарию)
После ввода пароля вы можете получить что-то вроде:
The authenticity of host 'github.com (192.30.252.1)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
или:
The authenticity of host 'github.com (192.30.252.1)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
В этом случае проверьте, что и вы и Git Bash имеете в виду один и тот же ключ,
сверив выведенное значение отпечатка (fingerprint) с тем, что было получено при генерации ключей.
Ели все в порядке, отвечайте на вопрос утвердительно.
В итоге вы должны получить сообщение:
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
где вместо username должно присутсвовать имя вашей учетной записи.
------------------------------------------
если будет ошибка, смотрим подробнее:
ssh -vvT [email protected]
если ошибка будет такая
"debug1: send_pubkey_test: no mutual signature algorithm"
то, делаем файл
~/.ssh/config
и туда добавить строчку
PubkeyAcceptedKeyTypes +ssh-rsa
------------------------------------------
*Далее Добавить доступ удаленный ( https://stackoverflow.com/questions/14762034/push-to-github-without-a-password-using-ssh-key )
вида (перед этим перходим в каталог проекта)
git remote set-url origin [email protected]:<Username>/<Project>.git
например
git remote set-url origin [email protected]:nvv13/test.git
или
git remote set-url origin [email protected]:nvv13/test.git
*Изменение пароля шифрования закрытого ключа
В случае, если при генерации ключей вы не указали пароль шифрования закрытого ключа,
он будет сохранен в открытом виде, чего делать не рекомендуется.
В этом случае вы можете задать пароль шифрования для уже существующего ключа
без его повторной генерации. Также вы можете сменить пароль для уже зашифрованного ключа.
Сделать это можно командой:
ssh-keygen -p
*Автоматический запуск ssh-агента при старте Git Bash
Для того, чтобы ssh-агент каждый раз запускался автоматически при старте Git Bash,
добавьте в файл ~/.profile или ~/.bashrc следующий код:
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
Теперь при запуске Git Bash также будет запускаться и ssh-агент. Если при генерации ключей (или позже)
мы задали пароль для шифрования закрытого ключа, при запуске, ssh-агент будет проявлять интерес к его значению.
Поянтно, что после закрытия Git Bash, его содержимое будет забыто и закрытый ключ будет в безопасности.
Если же мы хотим, чтобы забытие пароля шифрования ssh-агентом происходило быстрее,
мы можем задать нужный интервал времени в секундах при помощи команды:
ssh-add -t 300
---------------------------------------------------------------------------------------------------------
http.lowSpeedLimit, http.lowSpeedTime:
If the HTTP transfer speed, in bytes per second, is less than 'http.lowSpeedLimit'
for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.
Can be overridden by the
GIT_HTTP_LOW_SPEED_LIMIT and GIT_HTTP_LOW_SPEED_TIME environment variables.
export GIT_HTTP_LOW_SPEED_LIMIT=1000
export GIT_HTTP_LOW_SPEED_TIME=600
иногда надо, если качать с https://gitee.com например
---------------------------------------------------------------------------------------------------------