使用ssh连接github(linux和windows)
需要准备的事项:已安装并配置好的ssh、git
生产环境:alibaba cloud、windows 11
完成这个功能的目的主要是在研究 code-server 过程中进行git管理时使用默认的https方式进行push和pull操作时,因为总所周知的原因,无法连接到github
在查询各种方法并尝试无果后(许多代理网站没办法代理push和pull操作),找到这个方法最终解决问题
主要步骤:
- 生成ssh key
- 将ssh key添加到github
- 测试ssh key是否成功
生成ssh key
先进入当前用户的目录,使用 ls -a 命令查看当前目录下有哪些文件,如果存在.ssh文件夹,直接进入,否则创建.ssh文件夹
windows 用户使用 PowerShell 也是使用 cd ~ 命令进入当前用户的目录,这个目录在windows中是C:\Users\用户名
cd ~
ls -a
# 如果存在.ssh文件夹,直接进入
cd .ssh
# 否则创建.ssh文件夹
mkdir .ssh进入后先检查是否存在id_rsa和id_rsa.pub文件,如果存在则直接跳过此步骤,否则生成
ssh-keygen -t rsa -C "<EMAIL>" # 生成ssh key,注意替换邮箱
# 下面一路回车确认完成后在.ssh目录下会生成两个文件,id_rsa和id_rsa.pub,前者是私钥,后者是公钥
目录结构如下
.ssh
├── id_rsa
└── id_rsa.pub将ssh key添加到github
打开github,点击头像,选择Settings,选择SSH and GPG keys,点击New SSH key,将id_rsa.pub文件中的内容复制到Key中,Title可以随便填,然后点击Add SSH key
测试ssh key是否成功
ssh -T git@github.com如果出现以下内容,说明成功
Hi username/username.github.io ! You've successfully authenticated, but GitHub does not provide shell access.第一次登录可能会出现以下内容,直接输入yes即可
The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is SHA256:<YourKey>.
Are you sure you want to continue connecting (yes/no)?配置git通过ssh方式连接远程仓库
先配置身份,可以通过ide配置,也可以通过命令行配置,这里使用命令行配置
# 配置身份信息,如果配置过就不需要
git config --global user.name "YourUserName" # 注意替换username
git config --global user.email "YourEmail" # 注意替换邮箱通过ssh方式连接远程仓库
git remote set-url origin git@github.com:YouUserName/YouUserName.github.io.git # 注意替换username通过ssh添加远程仓库
git remote add origin git@github.com:YouUserName/YouUserName.github.io.git # 注意替换username对于windows系统,在配置完ssh之后使用git之前还需要启动ssh-agent服务
除了上面完成生成私钥和公钥外还需要启动ssh-agent服务,否则无法连接
Start-Service ssh-agent
# Start-Service ssh-agent 是一个在 PowerShell 中启动 SSH 代理服务的命令。
# 执行该命令后,SSH 代理服务将启动。你也可以设置 SSH 代理服务的启动类型为自动启动
Set-Service -Name ssh-agent -StartupType automatic
# Set-Service -Name ssh-agent -StartupType automatic 是一个在 PowerShell 中设置 SSH 代理服务启动类型的命令。
# 执行该命令后,SSH 代理服务的启动类型将被设置为自动启动。这意味着每次启动 Windows 系统时,SSH 代理服务会自动启动,无需手动操作。可以使用Get-Service命令查看SSH代理服务的状态,确认服务已启动后可以继续下一步操作
Get-Service -Name ssh-agent
# Get-Service -Name ssh-agent 是一个在 PowerShell 中查看 SSH 代理服务状态的命令。
# 执行该命令后,将显示 SSH 代理服务的状态,包括服务名称、当前状态、启动类型等。
# 如果服务已启动,将显示以下内容
#
# Status Name DisplayName
# ------ ---- -----------
# Running ssh-agent OpenSSH Authentication Agent将私钥添加到ssh-agent服务
ssh-add ~/.ssh/id_rsa关于ssh配置文件
使用 ssh 配置文件可以方便地管理多个 ssh 连接,避免每次连接都需要输入主机域名、端口号、用户名、私钥文件路径等信息。
配置文件位置
ssh 配置文件一般位于以下位置,并且以 config 为文件名:
- windows 系统:
C:\Users\用户名\.ssh\config - linux 系统:
~/.ssh/config
配置文件内容
Host github # 取的别名,在 ssh 连接时可以使用这个别名进行链接
HostName github.com # 主机域名,也可以使用 IP 地址
Port 22 # 端口号,默认 22
User git # 用户名,默认是 git
IdentityFile ~/.ssh/id_rsa # 私钥文件路径
ServerAliveInterval 60 # 服务器端每 60 秒发送一次心跳包
ServerAliveCountMax 30 # 服务器端 30 次心跳包无响应时,连接超时
PreferredAuthentications publickey # 优先使用指定的验证方式,默认是 publickey(公钥认证)
HostKeyAlgorithms +ssh-rsa # 主机密钥算法,默认是 ssh-rsa , + 表示添加
PubkeyAcceptedAlgorithms +ssh-rsa # 公钥算法,默认是 ssh-rsa , + 表示添加对于采取上述配置的 ssh ,我们可以使用以下命令进行连接,它会自动根据配置文件中的信息进行连接。
ssh -T github参考
https://docs.github.com/cn/authentication/connecting-to-github-with-ssh
https://blog.csdn.net/vxstar/article/details/131783270
更新日志
cc089-于f247f-于9965e-于1b1d2-于d40ff-于7f5a6-于8007c-于2a843-于f1615-于72875-于38628-于b59ae-于
