通过SSH从GitHub拉取代码至Web服务器遇权限问题求助
服务器SSH访问GitHub问题解答
1. 服务器上配置SSH访问GitHub的必要步骤
- 在服务器生成SSH密钥对:执行
ssh-keygen -t ed25519 -C "your_email@example.com",全程回车即可完成;也可将本地用于GitHub的私钥安全传输到服务器~/.ssh/目录下 - 将服务器公钥(
~/.ssh/id_ed25519.pub文件内容)添加到GitHub账户的SSH Keys列表(GitHub设置→SSH and GPG keys→New SSH key) - 修正权限:确保
~/.ssh目录权限为700,私钥文件(如id_ed25519)权限为600,公钥文件权限为644,执行命令:chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_ed25519 && chmod 644 ~/.ssh/id_ed25519.pub - 验证连接:执行
ssh -vT git@github.com,出现Hi [你的GitHub用户名]! You've successfully authenticated...即为配置成功
2. 把GitHub上的公钥复制到服务器.ssh/key的操作不正确
逻辑搞反了:GitHub需要存储服务器的公钥,服务器需要存储对应的私钥。默认SSH客户端只会自动查找~/.ssh/下id_rsa、id_ed25519这类默认命名的私钥文件,若你把私钥存成~/.ssh/key,SSH不会自动识别,要么重命名为默认文件名,要么通过config文件指定路径。
3. 是否需要配置.ssh/config文件?
不是必须,但两种场景下建议配置:
- SSH密钥不是默认命名(比如叫
github_key而非id_ed25519) - 需要自定义连接参数(如指定端口、代理)
示例配置(放在~/.ssh/config,权限设为600):
Host github.com User git IdentityFile ~/.ssh/github_key
4. 能否直接将代码推送到Web服务器?
可以,常见两种方式:
- Git远程仓库方式:在Web服务器创建裸Git仓库(
git init --bare repo.git),本地将其设为远程仓库(git remote add server ssh://user@your-server-ip/path/to/repo.git),推送后通过仓库的post-receive钩子脚本自动同步代码到网站根目录 - 直接文件传输:用
scp或rsync命令直接推送本地代码到服务器网站目录,但这种方式没有版本控制的优势
内容的提问来源于stack exchange,提问作者Tobias Schmid
相关产品推荐
相关产品推荐

