Найти в Дзене
AERONYTE

SSH‑доступ с удаленного сервера к GitHub

Настроить безопасное и понятное SSH‑соединение между сервером и GitHub, чтобы деплоить, пушить, и работать с Git как senior. Ключи будут названы по структуре: ~/.ssh/github_username/id_ed25519_ya_server sudo apt update
sudo apt install git openssh-client -y Проверь: git --version
ssh -V mkdir -p ~/.ssh/github_username
ssh-keygen -t ed25519 -C "username@yandex.ru" \
-f ~/.ssh/github_username/id_ed25519_ya_server Ответь Enter на все вопросы (в реальном проекте нужно обязательно задать passphrase для безопасности). Открой или создай файл ~/.ssh/config: vim ~/.ssh/config Добавь: Host github.com
HostName github.com
User username
IdentityFile ~/.ssh/github_username/id_ed25519_ya_server
IdentitiesOnly yes Установите права на файлы ключей и config: chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/github_username/id_ed25519_ya_server
chmod 644 ~/.ssh/github_username/id_ed25519_ya_server.pub ssh-keyscan github.com >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts Выведи ключ: cat ~/.ss
Оглавление

🎯 Цель

Настроить безопасное и понятное SSH‑соединение между сервером и GitHub, чтобы деплоить, пушить, и работать с Git как senior. Ключи будут названы по структуре:

~/.ssh/github_username/id_ed25519_ya_server

✅ 1. Установка необходимых утилит

sudo apt update
sudo apt install git openssh-client -y

Проверь:

git --version
ssh -V

🗝️ 2. Генерация именного SSH‑ключа

mkdir -p ~/.ssh/github_username

ssh-keygen -t ed25519 -C "username@yandex.ru" \
-f ~/.ssh/github_username/id_ed25519_ya_server

Ответь Enter на все вопросы (в реальном проекте нужно обязательно задать passphrase для безопасности).

⚙️ 3. Настройка SSH-конфига

Открой или создай файл ~/.ssh/config:

vim ~/.ssh/config

Добавь:

Host github.com
HostName github.com
User username
IdentityFile ~/.ssh/github_username/id_ed25519_ya_server
IdentitiesOnly yes

Установите права на файлы ключей и config:

chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/github_username/id_ed25519_ya_server
chmod 644 ~/.ssh/github_username/id_ed25519_ya_server.pub

🔐 4. Добавь GitHub в known_hosts

ssh-keyscan github.com >> ~/.ssh/known_hosts

chmod 644 ~/.ssh/known_hosts

🌐 5. Добавление публичного ключа в GitHub

Выведи ключ:

cat ~/.ssh/github_username/id_ed25519_ya_server.pub

Скопируй и добавь в GitHub/Settings/SSH and GPG keys:

👉
https://github.com/username

  • Title: ya_server
  • Type: Authentication Key
  • Нажмите кнопку → Add SSH key

🧪 6. Проверка соединения

ssh -T git@github.com

✅ Ответ:

Hi username! You've successfully authenticated...

Если нет — используй отладку, чтобы понять что не так:

ssh -vT git@github.com

📥 7. Клонирование по SSH

На GitHub выбери "SSH", скопируй URL:

git clone git@github.com:username/your_repo.git

🧠 8. Настрой git config

git config --global user.name "Имя Фамилия"
git config --global user.email "username@yandex.ru"

Чтобы узнать, какой пользователь сейчас используется Git'ом на этой машине, выполни в терминале:

git config --global user.name
git config --global user.email

🔁 9. Работа с репозиторием

cd your_repo
git status
touch README.md
git add
README.md
git commit -m "First commit from VPS"
git push origin main

🔄 10. Если есть passphrase — активируй ssh-agent

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/github_username/id_ed25519_ya_server

🔐 Права на ключи и каталог

chmod 700 ~/.ssh
chmod 700 ~/.ssh/github_
username
chmod 600 ~/.ssh/github_
username/id_ed25519_ya_server
chmod 644 ~/.ssh/github_
username/id_ed25519_ya_server.pub

⚠️ Best practices (Senior level)

  • Используй один ключ = одна цель (по серверу или проекту)
  • Не передавай приватный ключ через мессенджеры
  • Удаляй старые ключи из GitHub регулярно
  • Разделяй ключи по папкам (~/.ssh/github_username/)
  • Храни .ssh/config в gitignore, но не в репозитории
  • В CI/CD — храни приватный ключ как secret, добавляй через ssh-add

🧠 Вопросы на собесе

Вопрос: Как настроить многопрофильный доступ к GitHub через SSH?Использовать Host алиасы и ~/.ssh/config.
Вопрос: Почему нельзя использовать один ключ для всех? Повышает риск компрометации, сложно управлять
Вопрос: Как связать ключ с конкретной задачей? Нейминг + структура папок в .ssh/

📋 Краткий итог

  • ✅ Именной ключ сгенерирован и хранится в ~/.ssh/github_username/
  • ✅ Публичный ключ добавлен в GitHub
  • ✅ Конфиг .ssh/config указывает напрямую на github.com
  • ✅ Права выставлены
  • ✅ Всё готово к git clone, git push и CI/CD

🎓 Заключение

Теперь ты можешь клонировать репозиторий с GitHub по SSH, отправлять git push origin main и забирать обновления ветки main через git pull origin main на удаленном сервере как будто он у тебя на компьютере. Это must-have навык для DevOps-инженера и уверенного backend-разработчика.

Если статья была полезной — подпишись, сохраняй в закладки, делись с сокурсниками и пиши в коментарии, на какие темы написать новые шпаргалки — подготовим вместе! 🚀