给 Github 添加 ssh 连接方式并排错

Github放弃了账号密码的验证方式,所以需要重新设定链接方式。

为何要有此一折腾?

  1. Github 在08月15日彻底丢弃了账号密码验证的登录方式,之前的账号密码验证方式失效;
  2. 因为本身是在Rstudio上建目录,所以用的是普通用户,不是root账户,root账户下按照网上教程没有任何问题,
    普通用户就是无法成功clone项目,因为必须用普通用户所以得搞定;
  3. 之前不愿意多看几步学习,这不来补课了。
标准添加方式暂时不表,可以参看文章后半部分

记录排错过程

按以上流程正常添加SSH之后,但是无法正常克隆项目到本地,使用 ssh -T git@github.com 能显示正常连接,但就是无法clone项目本地, 错误信息如下:

git clone git@github.com:username/repository.git

Cloning into ‘xxx’… Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

提示权限不够,尝试了重新添加SSH key,解决.ssh 相关文件夹或文件权限以及其他网上提供的几乎任何解法,然后搞了快三天,(幸好疫情受困单位不介意封闭在家)

最后终于在**这里**发现了问题出现在哪里了;

仔细看下面的三个链接;

  1. git clone ssh://github.com/username/repository.git # 链接1
  2. git clone ssh://git@github.com/username/repository.git # 链接2
  3. git clone git@github.com:username/repository.git # 链接3

链接1题主说不能正常使用的链接,提示错误和我的一模一样;然后我就对着拿了链接2试了试,竟然clone成功了;

我一开始用的链接是链接3形式的命令,且高票答案里的说是正常可用的链接,但是我这里就是通不过,可能以后会发现更好的解法?

然后用链接2形式命令进行操作一切正常了,内心几千万只小马奔腾!!!

主要问题解决了,还有另外一个问题就是我之前建立的项目如何在本地文件不动的情况下正常更新到Github?

搜了一番之后就是改HTTPS链接成SSH的形式; 注意后面的链接形式,只有这个才可以;

git remote set-url origin ssh://git@github.com/username/repository.git
git add -A
git commit -m "up_breaking"
# git branch -M main2
git config --global push.default current
git push -u origin main

更新的其他命令

#可能会用到
cd /yourdir
git init
git remote add origin ssh://git@github.com/xxx/psssswd.git # 新文件夹直接添加
git remote -v 
# git remote remove origin
git add -A
git commit -m "backup"
ssh-agent bash
ssh-add /root/.ssh/id_rsa
git push -u origin main

然后就成功了更新到 Github 了,终于搞定,虽然还有未完成的新坑,但是起码 Github 可用了。

发现Github 的token验证方式也可以用R包实现链接,随后补上!

以下可能会用到的命令

# 给普通用户添加sudo权限
usermod -a -G sudo user
# 或者
usermod -a -G wheel user
# 给config文件权限
sudo chmod 600 config

Github 设置 SSH 链接

登陆到你的用户 设置你的 GitHub,

git config --list
git config --global user.name "ixxmu"
git config --global user.email "jjliulangjj@gmail.com"
# 生成 SSH 密钥的时候GitHub要求key需要密码保护,所以记得设置密码
ssh-keygen -t rsa -b 4096 -C "jjliulangjj@gmail.com"
# 添加私钥到你的当前运行环境(添加到此session)
eval "$(ssh-agent -s)"
ssh-add /home/rstudio/.ssh/id_rsa
# 注意查看你的id_rsa路径,如  ssh-add ~/.ssh/id_rsa
# 进入到 .ssh 文件夹,查看刚生成的公钥,
cd .ssh
ls -a
cat id_rsa.pub
cd #回到当前用户根目录

# 设置登录配置
touch /home/rstudio/.ssh/config

Host github.com
HostName github.com
User git
IdentityFile /home/rstudio/.ssh/id_rsa

# 最后给与权限,请依照自己的路径修改
chmod 700  /home/rstudio/.ssh
chmod 600 /home/rstudio/.ssh/id_rsa

复制公钥后转到 Github 网站上操作,找到你的个人 Settings , 在 SSH and GPG keys 选项里添加你的SSH key ,

将你复制的公钥添加在SSH选项里面,title 任意填写即可,如 vps_user1;此时回到你的命令窗口 输入以下命令即可链接你的SSH;

ssh -T git@github.com
# ssh -vT git@github.com 

出现以下提示信息说明你已经正常链接到Github,下面你就可以正常的操作你的Github项目了.

Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.

不出意外的话你可以继续像往常一样操作你的项目了,当然如果不成功, 请1根据窗口内的提示信息解决问题或者 2 往上看排错过程;

参考链接:

  1. fatal: The current branch master has no upstream branch
  2. ssh-key git多账户配置
  3. 每日自动将你的网站备份到Github 告别数据丢失

comments powered by Disqus