aileeao / setup_ssh.sh
aihuashanying's picture
修复不能push的问题
386b079
#!/bin/bash
echo "=== 配置 Hugging Face SSH 连接 ==="
echo ""
# 1. 检查并创建 SSH 目录
echo "1. 检查 SSH 目录..."
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "✓ SSH 目录已准备"
echo ""
# 2. 检查 SSH key
echo "2. 检查 SSH key..."
if [ -f ~/.ssh/id_ed25519.pub ]; then
echo "✓ 找到 id_ed25519.pub"
SSH_KEY_FILE="~/.ssh/id_ed25519"
SSH_PUB_KEY="~/.ssh/id_ed25519.pub"
elif [ -f ~/.ssh/id_rsa.pub ]; then
echo "✓ 找到 id_rsa.pub"
SSH_KEY_FILE="~/.ssh/id_rsa"
SSH_PUB_KEY="~/.ssh/id_rsa.pub"
else
echo "✗ 未找到 SSH key,正在生成..."
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" -C "huggingface"
SSH_KEY_FILE="~/.ssh/id_ed25519"
SSH_PUB_KEY="~/.ssh/id_ed25519.pub"
echo "✓ 已生成新的 SSH key"
fi
echo ""
# 3. 显示公钥
echo "3. 你的 SSH 公钥(请复制并添加到 Hugging Face):"
echo "----------------------------------------"
if [ -f ~/.ssh/id_ed25519.pub ]; then
cat ~/.ssh/id_ed25519.pub
elif [ -f ~/.ssh/id_rsa.pub ]; then
cat ~/.ssh/id_rsa.pub
fi
echo "----------------------------------------"
echo ""
echo "⚠️ 请访问 https://huggingface.co/settings/keys 添加上述公钥"
echo " 按 Enter 继续(添加完公钥后)..."
read
echo ""
# 4. 配置 SSH config
echo "4. 配置 SSH config..."
SSH_CONFIG="$HOME/.ssh/config"
# 备份现有配置
if [ -f "$SSH_CONFIG" ]; then
cp "$SSH_CONFIG" "$SSH_CONFIG.backup.$(date +%Y%m%d_%H%M%S)"
echo "✓ 已备份现有配置"
fi
# 确定使用的 key 文件
if [ -f ~/.ssh/id_ed25519 ]; then
KEY_PATH="$HOME/.ssh/id_ed25519"
elif [ -f ~/.ssh/id_rsa ]; then
KEY_PATH="$HOME/.ssh/id_rsa"
fi
# 添加或更新 hf.co 配置
if grep -q "Host hf.co" "$SSH_CONFIG" 2>/dev/null; then
echo "✓ 更新现有 hf.co 配置"
# 删除旧的 hf.co 配置块
sed -i '/^Host hf.co$/,/^$/d' "$SSH_CONFIG"
fi
# 添加新配置
cat >> "$SSH_CONFIG" << EOF
# Hugging Face SSH 配置
Host hf.co
HostName hf.co
User git
Port 22
IdentityFile $KEY_PATH
IdentitiesOnly yes
StrictHostKeyChecking accept-new
EOF
chmod 600 "$SSH_CONFIG"
echo "✓ SSH config 已配置(端口 22)"
echo ""
# 5. 设置 key 文件权限
echo "5. 设置文件权限..."
chmod 600 "$KEY_PATH"
chmod 644 "$KEY_PATH.pub"
echo "✓ 权限已设置"
echo ""
# 6. 测试 SSH 连接(端口 22)
echo "6. 测试 SSH 连接(端口 22)..."
if ssh -T [email protected] 2>&1 | grep -q "successfully authenticated"; then
echo "✓ SSH 连接成功!"
echo ""
echo "=== 配置完成 ==="
echo "现在可以正常使用 git push 了"
exit 0
else
echo "✗ 端口 22 连接失败,尝试配置端口 443..."
echo ""
# 更新配置为端口 443
sed -i 's/Port 22/Port 443/' "$SSH_CONFIG"
echo "✓ 已更新为端口 443"
echo ""
echo "7. 测试 SSH 连接(端口 443)..."
if ssh -T [email protected] 2>&1 | grep -q "successfully authenticated"; then
echo "✓ SSH 连接成功(使用端口 443)!"
echo ""
echo "=== 配置完成 ==="
echo "现在可以正常使用 git push 了"
exit 0
else
echo "✗ 端口 443 也连接失败"
echo ""
echo "请检查:"
echo "1. SSH 公钥是否已添加到 https://huggingface.co/settings/keys"
echo "2. 网络连接是否正常"
echo "3. 防火墙是否阻止了连接"
echo ""
echo "可以手动测试:"
echo " ssh -T [email protected]"
exit 1
fi
fi