github中的登录认证 转自http://www.wojilu.com/Forum1/Topic/2235

github 使用 ssh 方式认证登录。

 

官方文档:http://help.github.com/ssh-key-passphrases/

 

之所以不使用普通的密码验证登录,原因在于:密码不够安全。如果你使用简单的密码,比如“1234”,非常容易被猜到或者被暴力破解;如果你使用复杂的密码,为了避免自己也忘记,又可能会记在某个地方,如果被人发现,就糟了。两种方式都很不妥。所以 github 采用 ssh 密钥方案。

 

但如果只使用 ssh 密钥而不使用 passphrase(口令或密码),那跟使用复杂密码然后记下来没啥区别。比如你将ssh密钥记在电脑某处,如果其他人获取了这个文件,那就没有安全可言。解决办法是:再增加一个 passphrase。

 

所以,整个认证过程是:

a)先生成一个 ssh key,在github和本地机器配置;

b)然后在登录的时候,再输入 passphrase 登录(当然,我们可以通过脚本配置,避免每次重复输入 passphrase )。 

 

第一部分:配置ssh

 

先进入 cygwin 命令行。为了在你的电脑和github之间建立安全连接,需要SSH keys,所以你需要

 

1)先检测是否有这个key,请点击开始菜单中的 Git Bash,输入如下命令

$ cd ~/.ssh

 

2)系统应该反馈“系统找不到指定文件”,那么,我们需要生成一个新的key,输入如下代码

$ ssh-keygen -t rsa -C "your_email@youremail.com"

——其中的email请填写你注册时候的email

 

系统开始生成ssh公钥和私钥,然后会问你保存的目录,请直接回车即可(直接回车意味着在当前目录下的.ssh目录保存)。

 

3)输入一个密码(passphrase),请至少填写一个4位数,这个密码是你连接到github所用。输入之后,会生成id_rsa(私钥) 和 id_rsa.pub(公钥) 文件,如下图所示:

 

 

 

访问github网站, “Account Settings” > Click “SSH Public Keys” > Click “Add another public key”

 

用文本编辑器打开上图中第二个文件 id_rsa.pub,里面的内容就是SSH key,请复制它,粘贴入key里面,记得不要有任何多余的空格和换行。然后点击“Add key”提交。(Title栏可以不填写)

 

 

现在,你可以测试通过SSH连接到github了。请打开Git Bash,输入如下代码——

ssh -T git@github.com

 

如果提示“can't be established.”什么东西(如下代码),请不要管,直接按yes

The authenticity of host 'github.com (207.97.227.239)' can't be established.

RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.

Are you sure you want to continue connecting (yes/no)?

 

然后提示输入密码(passphrase)。

 

如果看到 You've successfully authenticated, but GitHub does not provide shell access 信息,就表示连接成功。

 

 

第二部分:避免重复输入 passphrase

 

 

通过上面的流程,已经正确配置了 ssh ,但你每次使用的时候,总是很不爽,比如在命令行下,每次 pull 或 push,都要重复输入 passphrase。你会想:我明明已经使用 ssh key 了,为什么还要我输入密码?

 

分两种情况讨论——

 

一、命令行下避免重复输入

 

在这种情况下,有一个工具可以帮你避免重复输入 passphrase ,这个工具叫 ssh-agent ,它可以帮你安全的存储passphrase,不用重复输入。

 

具体使用方法是通过脚本预设——

 

1)打开用户主目录下(比如c/cygwin/home/Administrator)的 .bashrc 文件,将如下脚本内容添加进去:

 

SSH_ENV="$HOME/.ssh/environment"

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV"
    echo succeeded
    chmod 600 "$SSH_ENV"
    . "$SSH_ENV" > /dev/null
    ssh-add
}

# test for identities
function test_identities {
    # test whether standard identities have been added to the agent already
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $? -eq 0 ]; then
        ssh-add
        # $SSH_AUTH_SOCK broken so we start a new proper agent
        if [ $? -eq 2 ];then
            start_agent
        fi
    fi
}

# check for running ssh-agent with proper $SSH_AGENT_PID
if [ -n "$SSH_AGENT_PID" ]; then
    ps -ef | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null
    if [ $? -eq 0 ]; then
        test_identities
    fi
# if $SSH_AGENT_PID is not properly set, we might be able to load one from
# $SSH_ENV
else
    if [ -f "$SSH_ENV" ]; then
        . "$SSH_ENV" > /dev/null
    fi
    ps -ef | grep "$SSH_AGENT_PID" | grep -v grep | grep ssh-agent > /dev/null
    if [ $? -eq 0 ]; then
        test_identities
    else
        start_agent
    fi
fi

 

 

2)然后打开 cygwin 的命令行,第一次打开,它会要求你输入 passphrase ,输入之后,再执行相应的远程操作,就不会要求重复输入 passphrase 了(当然重启电脑会要求再次输入)。

 

 

二、git extentions 中避免重复输入

 

【启用 PuTTY】

 

1)打开 PuTTY,方法:“远程”->PuTTY->“生成或者导入key”

 

2)导入你前面的 ssh key,点击下面的“Load”按钮,导入前面生成的 id_rsa 文件

 

 

3)这时它要求你输入 passphrase

 

 

4)输入成功,然后你需要点击下图的 Save private key,将私钥保存,你可以将它保存在 id_rsa(ssh私钥) 同一个目录。PuTTY 生成的私钥文件是 .ppk 后缀名。

 

 

【在 git extensions 中使用 PuTTY】

 

1)打开 git etensions,在 “远程”菜单中,点击“管理远程档案库”

 

2)点击右下部分的“私钥文件”后面的“浏览”,将前面 PuTTY 中保存的 .ppk 后缀的私钥文件加载进来。

 

然后点击“加载SSH密钥”,输入 passphrase,然后点击“测试连接”

此时 PuTTY/plink.exe 开始启动,只要这个开着,就不用重复输入 passphrase

 

 

3)现在可以顺利和远程库操作,比如下面的“拉取”

 

或者在 vs 中直接操作——

时间: 2024-11-05 12:23:24

github中的登录认证 转自http://www.wojilu.com/Forum1/Topic/2235的相关文章

Oracle中sqlplus 登录认证问题

在linux,unix操作系统上安装好oracle之后,使用sqlplus '/as sysdba'这命令就可以sysdba的身 份来登录oracle数据库,这样存在一些安全隐患,操作系统管理员也可以oracle用户登录oracle数据库 ,做一些sysdba一样的事情,于是就想,能不能取消这种操作系统认证的方法,而使用oracle用户名和 密码进行认证呢,经过查找文档,发现,在$ORACLE_HOME/network/admin/sqlnet.ora文件中添加以下 内容,SQLNET.AUTH

Laravel使用Socialite实现GitHub登录认证

1.引言 除了让用户走注册流程实现登录认证外,在社交网络日益发达的今天,许多网站还提供了使用社交网络账号实现第三方登录认证的功能.强大的Laravel也为这种功能提供了官方包--Socialite,Socialite目前支持国外多种社交媒体登录,包括Facebook.Twitter.Google.LinkedIn.GitHub以及Bitbucket.因为GFW的缘故,本节我们将简单演示如何通过Socialite使用GitHub进行第三方登录认证. 2.安装Socialite包 要使用Social

用户和安全性管理--SQL Server 的登录认证

   对任何企业组织来说,数据的安全性最为重要.安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到SQL Server 并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作.因此,安全性管理与用户管理是密不可分的.SQL Server 2000 提供了内置的安全性和数据保护,并且这种管理有效而又容易.    本章主要讨论如何创建和管理用户账号,以及如何实现和管理安全性,同时包括很多技巧和注意事项,这些技巧和注意事项将使您的工作更轻松,高效.     

在Apache Geronimo中创建登录和注册系统,第1部分

在Apache Geronimo中创建登录和注册系统,第1部分 使用J2EE 声明式安全性和Geronimo内置的Derby 数据库 简介 Geronimo 除了完全兼容 J2EE.开放源码.打包了 Apache 许可证之外,它最棒的一件事就是它的极端模块化.它的内核很紧凑,允许像 Apache Derby 这样的框架通过 Geronimo Bean (GBean)添加到内核或从内核删除.实际上,Derby 默认内置在 Geronimo 之中,所以对于 Geronimo 应用程序来说,Derby

MS SQL基础教程:用户和安全性管理--SQL Server的登录认证

对任何企业组织来说,数据的安全性最为重要.安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到SQL Server 并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作.因此,安全性管理与用户管理是密不可分的.SQL Server 2000 提供了内置的安全性和数据保护,并且这种管理有效而又容易. 本章主要讨论如何创建和管理用户账号,以及如何实现和管理安全性,同时包括很多技巧和注意事项,这些技巧和注意事项将使您的工作更轻松,高效. SQL Server

ELK日志系统:Filebeat使用及Kibana如何设置登录认证

根据elastic上的说法: Filebeat is a lightweight, open source shipper for log file data. As the next-generation Logstash Forwarder, Filebeat tails logs and quickly sends this information to Logstash for further parsing and enrichment or to Elasticsearch for

通过子域名来窃取全局共享的Cookie,间接绕过Uber的单点登录认证

本文讲的是通过子域名来窃取全局共享的Cookie,间接绕过Uber的单点登录认证, Uber使用Amazon CloudFront CDN的本意本来是为终端用户提供低延迟性和高传输速度,增加用户的客户的体验,但没想到,其子域名saostatic.uber.com却被黑客控制以窃取全局共享的Cookie,并间接绕过Uber的单点登录认证. 此外,Uber最近在auth.uber.com上部署了单点登录(SSO)系统,该系统基于所有* .uber.com子域之间的共享Cookie. 因此,利用子域进

asp.net5中的用户认证与授权(1)_实用技巧

就在最近一段时间,微软又有大动作了,在IDE方面除了给我们发布了Viausl Studio 2013 社区版还发布了全新的Visual Studio 2015 Preview. asp.net5中,关于用户的认证和授权提供了非常丰富的功能,如果结合ef7的话,可以自动生成相关的数据库表,调用也很方便. 但是,要理解这么一大堆关于认证授权的类,或者想按照自己项目的特定要求对认证授权进行定制,确实很头疼.为了解决这个问题,需要从根本上理解认证和授权的机制,不过这不是个简单的事情,一些概念也比较抽象,

SpringMVC拦截器实现登录认证_java

博客以Demo的形式讲诉拦截器的使用 项目结构如图: 需要的jar:有springMVC配置需要的jar和jstl需要的jar SpringMVC包的作用说明: aopalliance.jar:这个包是AOP联盟的API包,里面包含了针对面向切面的接口.通常spring等其它具备动态织入功能的框架依赖这个jar spring-core.jar:这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统