🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

كيفية إصلاح خطأ رفض الإذن العمومي SSH على GitHub

⏱️2 min read  ·  399 words

الخطأgit@github.com: تم رفض الإذن (المفتاح العام). فادح: لا يمكن القراءة من المستودع البعيد يعني أن GitHub رفض مصادقة SSH الخاصة بك. إنه مانع شائع عند إعداد Git. وإليك كيفية إصلاحه بالكامل.

ماذا يعني هذا الخطأ

يستخدم GitHub مفاتيح SSH لمصادقتك للدفع/السحب عبر SSH. “تم رفض الإذن (المفتاح العام)” يعني أن GitHub لم يتمكن من التحقق من هويتك – عادةً لأنه ليس لديك مفتاح SSH، أو لم تتم إضافة المفتاح إلى حساب GitHub الخاص بك، أو أن وكيل SSH لا يستخدمه.

الخطوة 1: التحقق من وجود مفاتيح SSH

ls -la ~/.ssh
# Look for: id_ed25519.pub or id_rsa.pub

# If you see .pub files, you may already have a key — skip to Step 3

الخطوة 2: إنشاء مفتاح SSH جديد

# Ed25519 is the modern recommended algorithm
ssh-keygen -t ed25519 -C "your_email@example.com"

# Press Enter to accept default location (~/.ssh/id_ed25519)
# Optionally set a passphrase for extra security

# For older systems without Ed25519 support:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

الخطوة 3: أضف المفتاح إلى وكيل SSH

# Start the ssh-agent
eval "$(ssh-agent -s)"
# Agent pid 12345

# Add your key
ssh-add ~/.ssh/id_ed25519

# On macOS, store passphrase in keychain
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

الخطوة 4: أضف المفتاح العام إلى جيثب

# Copy your PUBLIC key (.pub — never share the private key!)
cat ~/.ssh/id_ed25519.pub

# macOS: copy directly to clipboard
pbcopy < ~/.ssh/id_ed25519.pub

# Linux:
xclip -sel clip < ~/.ssh/id_ed25519.pub

ثم في جيثب:الإعدادات، ثم مفاتيح SSH وGPG، ثم مفتاح SSH جديد. الصق المفتاح العام ثم احفظه.

الخطوة 5: اختبار الاتصال

ssh -T git@github.com

# Success looks like:
# Hi username! You've successfully authenticated,
# but GitHub does not provide shell access.

# The "does not provide shell access" message is NORMAL and means it worked!

السبب الشائع 1: استخدام HTTPS Remote بدلاً من SSH

# Check your remote URL
git remote -v
# origin  https://github.com/user/repo.git  ← HTTPS, not SSH!

# Switch to SSH
git remote set-url origin git@github.com:user/repo.git

# Verify
git remote -v
# origin  git@github.com:user/repo.git (fetch)

السبب الشائع 2: لم يتم تحميل المفتاح في العامل

# List keys currently in the agent
ssh-add -l
# "The agent has no identities" means no key is loaded

# Add your key
ssh-add ~/.ssh/id_ed25519

# Make it persistent — add to ~/.ssh/config:
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  AddKeysToAgent yes
  UseKeychain yes   # macOS only

السبب الشائع 3: أذونات المفتاح الخاطئة

# SSH refuses keys with loose permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519       # private key
chmod 644 ~/.ssh/id_ed25519.pub   # public key
chmod 600 ~/.ssh/config

التصحيح باستخدام الإخراج المطول

# See exactly what SSH is doing
ssh -vT git@github.com

# Look for lines like:
# "Offering public key: ~/.ssh/id_ed25519"  ← key is being tried
# "Authentications that can continue: publickey"  ← GitHub wants a key
# If your key isn't offered, it's not in the agent or config

الأسئلة المتداولة

س: هل يجب علي استخدام Ed25519 أو RSA؟
ج: Ed25519 — إنه أكثر أمانًا وأسرع من RSA. استخدم RSA (4096 بت) فقط للأنظمة القديمة التي لا تدعم Ed25519.

س: ما الفرق بين ملف .pub والملف الآخر؟
A: id_ed25519.pub هو مفتاحك العام — آمن للمشاركة، قم بإضافته إلى GitHub. id_ed25519 (بدون امتداد) هو مفتاحك الخاص – لا تشاركه أبدًا، ولا تلتزم به أبدًا.

س: لقد نجح الأمر من قبل ولكنه فشل فجأة. لماذا؟
ج: غالبًا ما يفقد وكيل ssh المفاتيح بعد إعادة التشغيل. أضفAddKeysToAgent yes to ~/.ssh/configأو أعد تشغيلssh-add. على نظام التشغيل MacOS،UseKeychain yes يجعلها مستمرة.

س: هل يمكنني استخدام نفس المفتاح على أجهزة متعددة؟
ج: يمكنك ذلك، ولكن أفضل الممارسات هي استخدام مفتاح منفصل لكل جهاز. بهذه الطريقة، إذا تم اختراق جهاز واحد، يمكنك إلغاء هذا المفتاح فقط من GitHub دون التأثير على الأجهزة الأخرى.

س: HTTPS أو SSH لـ GitHub؟
ج: يتجنب SSH إدخال بيانات الاعتماد بشكل متكرر ويكون ملائمًا بمجرد الإعداد. يعد HTTPS مع رمز وصول شخصي أسهل للاستخدام لمرة واحدة أو الشبكات المقيدة التي تحظر SSH.

الخلاصة

“تم رفض الإذن (المفتاح العام)” يعني أن GitHub لم يتمكن من مصادقة مفتاح SSH الخاص بك. تسلسل الإصلاح:قم بإنشاء مفتاح باستخدامssh-keygen -t ed25519أضفه إلى الوكيل باستخدامssh-addوأضف مفتاح .pub إلى GitHub، واختبره باستخدامssh -T git@github.com. إذا استمر الفشل، فتأكد من أن جهاز التحكم عن بعد يستخدم SSH (وليس HTTPS) وأن أذونات المفاتيح صحيحة. العلامة المطولةssh -vT يكشف بالضبط أين تنهار المصادقة.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা