Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ SSH

ΠšΠ»ΡŽΡ‡ΠΈ SSH Π² Git ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ доступС ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ сСрвСрам Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Secure Shell (SSH). Они ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ бСзопасный способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ вашим ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ ΠΈ сСрвСром, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Git.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SSH ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Для создания SSH ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ RSA ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

	ssh-keygen -t rsa -C "your_email@example.com"

Π³Π΄Π΅:

  • ssh-keygen - это ΠΊΠΎΠΌΠ°Π½Π΄Π° для создания SSH ΠΊΠ»ΡŽΡ‡Π΅ΠΉ;

  • -t rsa - ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΈΠΏ ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. RSA - это Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный Ρ‚ΠΈΠΏ ΠΊΠ»ΡŽΡ‡Π°;

  • -C your_email@example.com - это ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ привязан ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ здСсь свой адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ описаниС.

Π”Π°Π»Π΅Π΅, Ссли Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ располоТСниС создаваСмых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слово, Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter:

Enter file in which to save the key (C:\Users\<your_username>/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):

Для создания ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ криптографичСской схСмы Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

  • для схСмы, основанной Π½Π° эллиптичСской ΠΊΡ€ΠΈΠ²ΠΎΠΉ Curve25519 ΠΈ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SHA-512:
  ssh-keygen -t ed25519
  • для схСм, основанных Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ECDSA ΠΈ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SHA-2
  ssh-keygen -t ecdsa -b 256
  ssh-keygen -t ecdsa -b 384
  ssh-keygen -t ecdsa -b 521

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ SSH ΠΊΠ»ΡŽΡ‡Π° Π² настройках ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ SSH ΠΊΠ»ΡŽΡ‡ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .pub, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ id_rsa.pub).

Для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° страницу добавлСния SSH ΠΊΠ»ΡŽΡ‡Π°:

  1. НаТмитС Π½Π° ΠΈΠΊΠΎΠ½ΠΊΡƒ профиля, Π·Π°Ρ‚Π΅ΠΌ Настройки.

  2. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ SSH ΠΊΠ»ΡŽΡ‡ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ SSH ΠΊΠ»ΡŽΡ‡.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Π² Ρ„Π°ΠΉΠ» Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, ΠΈΠ»ΠΈ сразу ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ содСрТимоС Π² Π±ΡƒΡ„Π΅Ρ€ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² консоли:

cat ~/.ssh/id_rsa.pub

На ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΉΡΡ страницС слСдуСт ввСсти ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ своСго ΠΊΠ»ΡŽΡ‡Π° ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ содСрТимоС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ (ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ) ΠΊΠ»ΡŽΡ‡Π°.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… SSH ΠΊΠ»ΡŽΡ‡Π΅ΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡƒΠΆΠ΅ сгСнСрированных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π² консоли git:

ssh-agent -s

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

SSH_AUTH_SOCK=/tmp/ssh-40ZRlMnJMhEY/agent.1794; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1795; export SSH_AGENT_PID;
echo Agent pid 1795;

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» создан SSH-Π°Π³Π΅Π½Ρ‚ с PID (процСссным ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ) 1795 ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сокСт /tmp/ssh-40ZRlMnJMhEY/agent.1794 для связи с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ.

РасполоТСниС ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

  • Π² ОБ Windows ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ адрСсу C:\Users\<your_username>\.ssh;
  • Π² ОБ Linux - /home/<your_username>/.ssh (дирСктория ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скрытой).

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ОБ Linux Π² ΠΏΠ°ΠΏΠΊΠ΅ с ssh ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

cd ~/.ssh
xdg-open .

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΏΠΎ SSH

Для ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΏΠΎ SSH Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

git remote set-url origin ssh://git@gitverse.ru:2222/<username>/<repository_name>

ВмСстС с Ρ‚Π΅ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΎΡ‚ соСдинСния ΠΏΠΎ HTTPS ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ SSH. Достаточно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ URL для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎ SSH с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git remote set-url Ρ„Π»Π°Π³ΠΎΠΌ --add. Git позволяСт ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько URL для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

git remote set-url --add origin ssh://git@gitverse.ru:2222/<username>/<repository_name>

Π”Ρ€ΡƒΠ³ΠΈΠ΅ способы Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Git

Π’ΠΎΠΊΠ΅Π½ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ Π±Π΅Π· добавлСния SSH ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ см. Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…:

  1. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСпозиториями.
  2. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ c использованиСм Ρ‚ΠΎΠΊΠ΅Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  3. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½Π° доступа Π² локальном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Авторизация ΠΏΠΎ https

Для доступа ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΏΠΎ https трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи. Π›ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ потрСбуСтся Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ (см. Ρ€Π°Π·Π΄Π΅Π» Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ).

Для измСнСния способа Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ потрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ URL ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ см. Ρ€Π°Π·Π΄Π΅Π»Ρ‹:

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория.
  2. ИзмСнСниС URL ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория.

Π’Ρ‹ нашли Ρ‡Ρ‚ΠΎ искали?