You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

自定义SSH端口远程服务器的Git无密码配置及克隆推送问题

搞定自定义SSH端口的远程Git服务器搭建+无密码操作方案

我来帮你一步步解决这个问题——从搭建适配自定义SSH端口的远程Git服务器,到实现完全无密码的Git操作,全程给你理清楚:

一、先在远程服务器创建Git裸仓库

既然你有root权限,咱们先找个干净的目录放仓库,比如/opt/git,避免和系统文件混在一起:

# 创建仓库根目录
mkdir -p /opt/git
cd /opt/git
# 创建空的裸仓库(裸仓库没有本地工作目录,专门用来做远程仓库)
git init --bare my-project.git
# 调整权限确保Git能正常读写(用root的话直接给root权限就行)
chown -R root:root my-project.git
chmod -R 755 my-project.git

二、让本地Git适配远程的自定义SSH端口

因为远程用的不是默认22端口,总每次输端口太麻烦,给你两种解决方式:

方式1:临时指定端口(适合偶尔用)

clone的时候直接在地址里加端口:

git clone ssh://root@你的服务器IP:自定义端口/opt/git/my-project.git

push的时候也要带端口,但这种方式每次都输,推荐用下面的永久配置。

方式2:修改本地SSH配置(一劳永逸)

编辑本地的SSH配置文件,没有的话就新建一个:

touch ~/.ssh/config
vim ~/.ssh/config

把下面内容加进去(替换成你的服务器信息):

Host my-git-server
    HostName 你的服务器IP
    User root
    Port 你的自定义端口号

保存后一定要给配置文件设对权限,不然SSH会报错:

chmod 600 ~/.ssh/config

之后你就可以用my-git-server代替一大串地址了,比如clone命令简化成:

git clone my-git-server:/opt/git/my-project.git

三、配置SSH无密码登录(解决push/clone要输密码的问题)

1. 本地生成SSH密钥对(没有的话才需要)

在本地终端执行:

ssh-keygen -t ed25519  # ed25519是更安全的加密算法,老系统不支持的话换rsa
# 一路回车就行,别设置密钥密码,不然还是要输密码,达不到无密码效果

2. 把本地公钥传到远程服务器

最简单的方式用ssh-copy-id,指定端口就行:

ssh-copy-id -p 你的自定义端口 root@你的服务器IP

如果ssh-copy-id不支持指定端口,就手动复制:

  • 本地执行cat ~/.ssh/id_ed25519.pub,复制输出的公钥内容
  • 远程服务器执行:
    mkdir -p ~/.ssh
    echo "刚才复制的公钥内容" >> ~/.ssh/authorized_keys
    # 权限必须设对,否则SSH会拒绝登录
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

四、测试Git操作是否正常

现在来验证一下:

# 克隆远程仓库到本地
git clone my-git-server:/opt/git/my-project.git
cd my-project
# 创建测试文件并提交
echo "测试内容" > README.md
git add README.md
git commit -m "第一次提交测试"
# 推送到远程
git push origin main

如果一切顺利,push的时候不会要求输入密码,远程仓库也能收到你的提交。

踩坑排查指南

如果还是连不上,先排查SSH连接:执行ssh my-git-server,看能不能无密码登录。如果SSH连不上,检查这几点:

  • 远程服务器防火墙有没有开放你的自定义SSH端口
  • 远程的sshd_config文件里有没有开启root登录(默认可能禁用,修改/etc/ssh/sshd_config里的PermitRootLogin yes,然后重启sshd:systemctl restart sshd
  • 本地SSH配置里的IP、端口有没有写错
    如果Git提示权限问题,检查远程仓库目录的权限,确保root用户有读写权限。

内容的提问来源于stack exchange,提问作者MarvinLeRouge

火山引擎 最新活动