Windows/Linux Ubuntu 子系统 Github SSH 设置

Posted

技术标签:

【中文标题】Windows/Linux Ubuntu 子系统 Github SSH 设置【英文标题】:Windows/Linux Ubuntu Subsystem Github SSH Setup 【发布时间】:2019-06-27 17:53:02 【问题描述】:

好的,所以我已经在网上阅读了很多关于此的帖子,但没有一个是真正明确的,或者至少对于我的技能水平的人来说。我在 Windows 上设置了 Ubuntu 子系统,我正在尝试设置我的 github 密钥,这样我就不必在每次推送等时登录。

如果您有简单的步骤,请随意忽略下面的其余部分,只是想确保我提供的信息与我在下面尝试的内容一样多。


我尝试了这种方法,但仍然无法正常工作 - Running SSH Agent when starting Git Bash on Windows

这是我采取的完整步骤

1) 我跑了$ ssh-keygen -t rsa -b 4096 -C "my@email.com"

在提示添加键到默认位置时按回车希望是/.ssh(在 linux 端) 在位于此处的窗口上:C:\Users\MyUserName\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\MyUserName\.ssh

/.ssh中此步骤后添加的文件

/.ssh
   id_rsa
   id_rsa.pub

2) 接下来我用 nano 修改了我的 .bashrc

$ nano ~/.bashrc

这已打开C:\Users\MyUserName\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\MyUserName\.bashrc

我将以下 sn-p 添加到现有 .bashrc 的末尾

# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"

function start_agent 
    echo "Initializing new SSH agent..."
    touch $SSH_ENV
    chmod 600 "$SSH_ENV"
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "$SSH_ENV"
    . "$SSH_ENV" > /dev/null
    /usr/bin/ssh-add


# Source SSH settings, if applicable
if [ -f "$SSH_ENV" ]; then
    . "$SSH_ENV" > /dev/null
    kill -0 $SSH_AGENT_PID 2>/dev/null || 
        start_agent
    
else
    start_agent
fi

3) 我跑了source ~/.bashrc

4) 创建配置文件$ touch ~/.ssh/config

5) 在配置中,这就是我所拥有的以及我认为我可能出错的地方。

这是上面引用的原始帖子中的 sn-p

Host github.com-<YOUR_GITHUB_USERNAME> 
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes


Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes

<More hosts and github configs can be added in similar manner mentioned above>

这是我的

Host github.com-MyGithubUsername
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
AddKeysToAgent yes

6) 然后我通过运行$ ssh-add ~/.ssh/id_rsa向代理添加密钥

我跑$ ssh github.com-MyGithubUsername 检查一切是否正常并返回

The authenticity of host 'github.com (192.XX.XXX.XXX)' can't be established.
RSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)?

我输入yes 并返回

Warning: Permanently added 'github.com,192.XX.XXX.XXX' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
Hi MyUserName! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

在此之后尝试推送提交,但仍然要求我登录


我也遇到了this post,并尝试了其中的一些方法,但也没有用,所以我从头开始尝试了上述方法

任何帮助将不胜感激:/

【问题讨论】:

听起来代理停止运行。在您推送之前,ssh-add -l 是否会显示您的密钥? 是的,确实如此......而且我将遥控器更改为使用 ssh 而不是 http 并且有效。在尝试这么多事情的迷雾中,一个人在我的雷达上得到了 ugh smh lol .. 现在从头开始,确定哪些步骤是需要的,哪些不是.. 从你看到的上面的步骤.. 我能做的任何事情遗漏或不需要做或有更好的方法还是我应该坚持这种方法? 是的,遥控器不能是 http :) 步骤看起来不错。 【参考方案1】:

只要您使用的是 SSH URL,这些步骤就可以了:

cd /path/to/my/repo
git remote -v

如果以 https 开头:

git remote set-url origin github.com-MyGithubUsername:<mylogin>/<myrepo>

请注意,仅当您在设置私钥时添加了密码时才需要 SSH 代理。

【讨论】:

以上是关于Windows/Linux Ubuntu 子系统 Github SSH 设置的主要内容,如果未能解决你的问题,请参考以下文章

Linux (Windows Linux子系统)

linux ubuntu的服务器, 硬盘满了,现在系统 起不来 了。。

windows linux双系统共用蓝牙鼠标

安装Windows Linux 子系统的方法:适用于windows 11 版本

Ubuntu双系统

win10 pro安装ubuntu 子系统