当使用virtualbox安装linux系统后,使用nat网络。
无法上网,报错信息如下:
使用命令,ping www.baidu.com
unkown host www.baidu.com
使用ifconfig命令后,未显示eth0网卡,
使用命令vi /etc/sysconfig/networks-script/ifcfg-eth0,
将onboot="no" 改为yes后
重启,即可
2014年9月13日星期六
Ubuntu下Postgresql-8.4安装及配置
第一步:在Ubuntu下安装Postgresql
[代码内容]
root@ubuntuserver:~# sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4
[代码说明]
安装服务端和命令行客户端psql。
[功能说明]
/usr/lib/postgresql/8.4/ 存放postgresql相关的二进制文件
/usr/lib/postgresql/8.4/bin/ 可执行文件
/usr/lib/postgresql/8.4/lib/ 共享库文件
/etc/postgres/8.4/main/ 存放postgresql配置文文件
/var/lib/postgresql/ postgres用户的主文件夹
root@ubuntuserver:~# sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4
[代码说明]
安装服务端和命令行客户端psql。
[功能说明]
/usr/lib/postgresql/8.4/ 存放postgresql相关的二进制文件
/usr/lib/postgresql/8.4/bin/ 可执行文件
/usr/lib/postgresql/8.4/lib/ 共享库文件
/etc/postgres/8.4/main/ 存放postgresql配置文文件
/var/lib/postgresql/ postgres用户的主文件夹
第二步:修改PostgreSQL数据库的默认用户postgres的密码(注意不是linux系统帐号)
[代码内容]
root@ubuntuserver:~# sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD ‘postgres’;postgres=# \q
[代码说明]
‘#’和’#'之前的字符是系统提示符,’postgres=#’是psql客户端的提示符,红色字符为输入命令(本文其它部分亦如此);
第一行:运行psql,psql是一个标准的postgressql客户端,也可以使用”sudo su postgres -c psql”,效果是一样的;
第二行:修改postgres的密码为postgres,不要忘记添加分号(回车后分号之前的sql语句才会立即执行)
第三行:退出psql客户端
[功能说明]
PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,我人需要修改为指定的密码,这里设定为’postgres’。
root@ubuntuserver:~# sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD ‘postgres’;postgres=# \q
[代码说明]
‘#’和’#'之前的字符是系统提示符,’postgres=#’是psql客户端的提示符,红色字符为输入命令(本文其它部分亦如此);
第一行:运行psql,psql是一个标准的postgressql客户端,也可以使用”sudo su postgres -c psql”,效果是一样的;
第二行:修改postgres的密码为postgres,不要忘记添加分号(回车后分号之前的sql语句才会立即执行)
第三行:退出psql客户端
[功能说明]
PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,我人需要修改为指定的密码,这里设定为’postgres’。
第三步:修改linux系统的postgres用户的密码(密码与数据库用户postgres的密码相同)
[代码内容]
root@ubuntuserver:~# sudo passwd -d postgres
root@ubuntuserver:~# sudo -u postgres passwd[代码说明]
第一行:删除密码
第二行:创建密码
[功能说明]
PostgreSQL数据默认会创建一个linux用户postgres,通过上面的代码修改密码为’postgres’(这取决于第二步中的密码,只要与其相同即可)。
root@ubuntuserver:~# sudo passwd -d postgres
root@ubuntuserver:~# sudo -u postgres passwd[代码说明]
第一行:删除密码
第二行:创建密码
[功能说明]
PostgreSQL数据默认会创建一个linux用户postgres,通过上面的代码修改密码为’postgres’(这取决于第二步中的密码,只要与其相同即可)。
现在,我们就可以在数据库服务器上用 postgres帐号通过psql或者pgAdmin等等客户端操作数据库了(暂时还不能远程访问)。
第四步:修改PostgresSQL数据库配置实现远程访问
[代码内容]
root@ubuntuserver:~# sudo vi /etc/postgresql/8.4/main/postgresql.conf
—>改变行:#listen_addresses = ‘localhost’
—>修改为:listen_addresses = ‘*’
—>改变行:#password_encryption = on
—>修改为:password_encryption = on
root@ubuntuserver:~# sudo vi /etc/postgresql/8.4/main/pg_hba.conf
—>文件末添加行:# to allow your client visiting postgresql server
—>文件末添加行:host all all 0.0.0.0 0.0.0.0 md5
root@ubuntuserver:~# sudo /etc/init.d/postgresql-8.4 restart
[代码说明]
第一行:修改postgresql.conf的目的是修改连接权限;
第二行:修改pg_hba.conf的目的是设置谁才可以操作数据服务器;第三行:重启postgresql数据库的服务程序,以使上面的配置生效。
详细解释一下”host all all 0.0.0.0 0.0.0.0 md5“:
host表示允许的类型是主机;
第一个all是允许的数据库名字;
第二个all是允许的用户;
第一个0.0.0.0是允许访问的ip address;
第二个0.0.0.0是允许访问的subnet mask;
最后的md5表示密码的加密方式,如果将md5改成trust则可以让指定范围的主机数据库的时候不需要提供密码。
关于ip address和subnet mask,你也可以修改为你的机器IP地址(如10.13.19.53)和子网掩码(如 255.255.255.255),这样就只有你自己的主机可以远程访问数据库了。 如果要使用一个IP地址范围,只需要把子网掩码设置成合适的值,如果子网掩码设置成0.0.0.0,则所有主机均可以访问数据库(IP可以任意设定),如果将md5改成trust则可以让指定范围的主机访问指定的数据库的时候不需要提供密码。
[功能说明]
实现远程访问
root@ubuntuserver:~# sudo vi /etc/postgresql/8.4/main/postgresql.conf
—>改变行:#listen_addresses = ‘localhost’
—>修改为:listen_addresses = ‘*’
—>改变行:#password_encryption = on
—>修改为:password_encryption = on
root@ubuntuserver:~# sudo vi /etc/postgresql/8.4/main/pg_hba.conf
—>文件末添加行:# to allow your client visiting postgresql server
—>文件末添加行:host all all 0.0.0.0 0.0.0.0 md5
root@ubuntuserver:~# sudo /etc/init.d/postgresql-8.4 restart
[代码说明]
第一行:修改postgresql.conf的目的是修改连接权限;
第二行:修改pg_hba.conf的目的是设置谁才可以操作数据服务器;第三行:重启postgresql数据库的服务程序,以使上面的配置生效。
详细解释一下”host all all 0.0.0.0 0.0.0.0 md5“:
host表示允许的类型是主机;
第一个all是允许的数据库名字;
第二个all是允许的用户;
第一个0.0.0.0是允许访问的ip address;
第二个0.0.0.0是允许访问的subnet mask;
最后的md5表示密码的加密方式,如果将md5改成trust则可以让指定范围的主机数据库的时候不需要提供密码。
关于ip address和subnet mask,你也可以修改为你的机器IP地址(如10.13.19.53)和子网掩码(如 255.255.255.255),这样就只有你自己的主机可以远程访问数据库了。 如果要使用一个IP地址范围,只需要把子网掩码设置成合适的值,如果子网掩码设置成0.0.0.0,则所有主机均可以访问数据库(IP可以任意设定),如果将md5改成trust则可以让指定范围的主机访问指定的数据库的时候不需要提供密码。
[功能说明]
实现远程访问
第五步:创建用户和数据库
[代码内容]
root@ubuntuserver:~# psql -U postgres -h 127.0.0.1postgres=# create user “IamJiwan” with password ‘IamJiwan’ nocreatedb;
postgres=# create database “mydatabase” with owner=”IamJiwan”;
[代码说明]
第一行:运行psql客户端,并指定用户为postgres主机为127.0.0.1,执行此行后需要输入密码’postgres’,如不指定则默认用户为linux系统当前登录用户,默认数据库服务器为本机;
第二行:添加数据库用户“IamJiwan“;
第三行:添加数据库“mydatabase”并设定所有者为”IamJiwan”;
用户名和数据库名称加上引号后才区分大小写,否则会自动转换成小写;
双引号作用:创建对象的时候,对象名、字段名加双引号,则表示严格区分大小写,否则都默认小写;
单引号作用:标识字符与数字的区别,并不区分大小写。
[功能说明]
创建用户和数据库
[备注内容]
postgres还提供了命令行创建用户和数据库的方法:
root@ubuntuserver:~# sudo -u postgres createuser -D -P mynewuser
root@ubuntuserver:~# sudo -u postgres createdb -O mynewuser mydatabase
第一行:-D该用户没有创建数据库的权利,-P提示输入密码,后面的选项都可以省略,命令执行的时候会提示用户选择yes或者no
第二行:-O设定所有者为mynewuser
root@ubuntuserver:~# psql -U postgres -h 127.0.0.1postgres=# create user “IamJiwan” with password ‘IamJiwan’ nocreatedb;
postgres=# create database “mydatabase” with owner=”IamJiwan”;
[代码说明]
第一行:运行psql客户端,并指定用户为postgres主机为127.0.0.1,执行此行后需要输入密码’postgres’,如不指定则默认用户为linux系统当前登录用户,默认数据库服务器为本机;
第二行:添加数据库用户“IamJiwan“;
第三行:添加数据库“mydatabase”并设定所有者为”IamJiwan”;
用户名和数据库名称加上引号后才区分大小写,否则会自动转换成小写;
双引号作用:创建对象的时候,对象名、字段名加双引号,则表示严格区分大小写,否则都默认小写;
单引号作用:标识字符与数字的区别,并不区分大小写。
[功能说明]
创建用户和数据库
[备注内容]
postgres还提供了命令行创建用户和数据库的方法:
root@ubuntuserver:~# sudo -u postgres createuser -D -P mynewuser
root@ubuntuserver:~# sudo -u postgres createdb -O mynewuser mydatabase
第一行:-D该用户没有创建数据库的权利,-P提示输入密码,后面的选项都可以省略,命令执行的时候会提示用户选择yes或者no
第二行:-O设定所有者为mynewuser
第六步:如何安装和使用pgAdmin3客户端操作postgresql数据库
[代码内容]
root@ubuntuserver:~# sudo apt-get install pgadmin3
[功能说明]安装图形客户端pgAdmin3
root@ubuntuserver:~# sudo apt-get install pgadmin3
[功能说明]安装图形客户端pgAdmin3
介绍 ssh-agent
ssh-agent
是专为既令人愉快又安全的处理 RSA 和 DSA 密钥而设计的特殊程序,它包括在 OpenSSH分发内(请参阅 本系列文章的第 1 部分以得到关于 RSA 和 DSA 认证的介绍)。不同于 ssh
, ssh-agent
是个长时间持续运行的守护进程(daemon),设计它的唯一目的就是对解密的专用密钥进行高速缓存。ssh
包含的内建支持允许它同 ssh-agent
通信,允许 ssh
不必每次新连接时都提示您要密码才能获取解密的专用密钥。对于 ssh-agent
,您只要使用 ssh-add
把专用密钥添加到 ssh-agent
的高速缓存中。这是个一次性过程;用过 ssh-add
之后, ssh
将从 ssh-agent
获取您的专用密钥,而不会提示要密码短语来烦您了。
让我们看一下整个
ssh-agent
密钥高速缓存系统的工作过程。 ssh-agent
启动时,在脱离 shell(外壳程序)并继续在后台运行之前它会输出一些重要的环境变量。以下是 ssh-agent
开始时生成的输出的一些示例:
|
正如您所看到的,事实上
ssh-agent
的输出是一系列 bash 命令;如果这些命令被执行,则将设置两个环境变量:SSH_AUTH_SOCK 和 SSH_AGENT_PID。内含的 export 命令使这些环境变量对之后运行的任何附加命令都可用。唔, 如果 shell 真对这些行进行计算,这一切才会发生,但是此时它们只是被打印到标准输出(stdout)而已。要使之确定,我们可以象下面这样调用 ssh-agent
:
|
这个命令先让 bash 运行
ssh-agent
后对 ssh-agent
的输出进行计算。shell 以这种调用方式(使用反引号,而不是普通的单引号)设置并导出 SSH_AGENT_PID 及 SSH_AUTH_SOCK 变量,使这些变量对于您在登录会话期间启动的所有新进程都可用。
启动
ssh-agent
的最佳方式就是把上面这行添加到您的 ~/.bash_profile 中;这样,在您的登录 shell 中启动的所有程序都将看到环境变量,而且能够定位 ssh-agent
,并在需要的时候向其查询密钥。尤其重要的环境变量是 SSH_AUTH_SOCK;SSH_AUTH_SOCK 包含有 ssh
和 scp
可以用来同 ssh-agent
建立对话的 UNIX 域套接字的路径。
但是
ssh-agent
启动时高速缓存当然是空的,里面不会有解密的专用密钥。在我们真能使用 ssh-agent
之前,首先还需要使用 ssh-add
命令把我们的专用密钥添加到 ssh-agent
的高速缓存中。下面的示例中,我使用 ssh-add
把我的 ~/.ssh/identity 专用 RSA 密钥添加到 ssh-agent
的高速缓存中:
|
正如您所看到的,
ssh-add
要我的密码短语来对专用密钥进行解密并存储在 ssh-agent
的高速缓存中以备使用。一旦您已经用 ssh-add
把专用密钥(或多个密钥)添加到 ssh-agent
的高速缓存中, 并在当前的 shell 中(如果您在 ~/.bash_profile 中启动 ssh-agent
,情况应当是这样)定义 SSH_AUTH_SOCK,那么您可以使用 scp
和 ssh
同远程系统建立连接而不必提供密码短语。ssh-agent
确实棒,但是其缺省配置还是会留给我们一些小小的不便。让我们来看一下这些不足吧。
首先,~/.bash_profile 中的
eval `ssh-agent`
使每次登录会话都会启动一个新的 ssh-agent
副本;这不仅仅是有一丁点儿浪费,而且还意味着您得使用 ssh-add
向每个新的 ssh-agent
副本添加专用密钥。如果您只想打开系统上的一个终端或控制台,这没什么大不了的,但是我们中大多数人打开相当多的终端,每次新打开控制台都需要键入密码短语。从技术角度讲,既然一个 ssh-agent
进程的确应当足够了,要是我们还需这样做,这毫无道理。
有关
ssh-agent
的缺省设置的另外一个问题是它同 cron 作业不兼容。由于 cron 作业是 cron 进程启动的,这些作业无法从它们的环境中继承 SSH_AUTH_SOCK 变量,因而也无从知道 ssh-agent
进程正在运行以及如何同它联系。事实证明这个问题也是可以修补的。
|
为了解决这些问题,我编写了一个有用的
ssh-agent
前端,它基于 bash,叫做 keychain
。 keychain
的特别之处在于它允许 每个系统使用一个 ssh-agent
进程,而非每次登录会话。这意味着您只需对每个专用密钥执行一次 ssh-add
,就一次。正如我们稍后将要看到的一样, keychain
甚至有助于优化 ssh-add
,而这只要它试图向那些正在运行的 ssh-agent
添加其高速缓存中没有的专用密钥。
以下对
keychain
如何工作从头到尾浏览一遍。从 ~/.bash_profile 中启动时, keychain
将首先查看 ssh-agent
是否已经在运行了。如果没有,它就启动 ssh-agent
并把重要的 SSH_AUTH_SOCK 和 SSH_AGENT_PID 变量记录在 ~/.ssh-agent 文件中,一方面为了安全而保存,另一方面也是为了以后的使用。这是启动 keychain
的最佳途径;同使用平淡无奇的老式 ssh-agent
一样,我们在 ~/.bash_profile 内部执行必要的配置:
|
正如您所看到的,对于
keychain
我们用 source 命令读入并执行 ~/.ssh-agent 文件,而不是象我们直接使用 ssh-agent
时所做的对输出进行计算。但是,结果是一样的:定义了非常重要的 SSH_AUTH_SOCK,而且正运行 ssh-agent
以备使用。同时,因为 SSH_AUTH_SOCK 被记录在 ~/.ssh-agent 里,只要用 source 命令读入并执行 ~/.ssh-agent 文件,就可以轻易的把我们的 shell 脚本及 cron 作业同 ssh-agent
连接起来。keychain
本身也利用了这个文件;您应该记住 keychain
启动时,它会查看现有的 ssh-agent
是否正在运行。如果是,则它使用 ~/.ssh-agent 文件来获得适当的 SSH_AUTH_SOCK 设置,这样就使 keychain
能使用现有的代理程序而不必新启动一个。只有在 ~/.ssh-agent 文件无效(指向一个不存在的 ssh-agent
)或 ~/.ssh-agent 文件本身不存在时, keychain
才会启动新的 ssh-agent
进程。
|
既然
keychain
在 /usr/bin/ 目录下,就请把它添加到您的 ~/.bash_profile 中,并把您的专用密钥路径作为参数。下面是一个既标准又好的启用 keychain
的 ~/.bash_profile:启用 keychain 的 ~/.bash_profile 示例
|
您一为每次登录时调用
keychain
配置好了 ~/.bash_profile,就请先退出再登录回来。在您再次登录时, keychain
将启动 ssh-agent
,并记录下 ~/.ssh-agent 中的代理程序环境变量设置,然后提示您输入在 ~/.bash_profile 中的 keychain
命令行指定的所有专用密钥的密码短语:Keychain 首次启动
您一输入密码短语,您的专用密钥就会被高速缓存,同时
keychain
将退出。接着,用 source 命令读入并执行 ~/.ssh-agent,初始化您的登录会话以便同 ssh-agent
一起使用。现在,如果您退出,然后再登录回来,将发现 keychain
会找到现有的 ssh-agent
进程;在您退出时,它并没有终止。此外, keychain
将验证您指定的专用密钥是否已经在 ssh-agent
的高速缓存中了。如果没有,那么将会提示您输入正确的密码短语,但如果一切进展顺利,则现有 ssh-agent
仍包含有您以前添加的专用密钥;这意味着不会提示您输入密码:Keychain 找到现有的 ssh-agent
祝贺您!您刚才已经登录了,应该能够用
ssh
和 scp
连到远程系统;您不必一登录就使用 ssh-add
,而且 ssh
和 scp
也不会提示您输入密码短语。事实上,只要初始的 ssh-agent
进程一直在运行,您就能不提供密码登录并建立 ssh
连接。 ssh-agent
进程持续运行直到机器重新启动也是很有可能的;由于您最可能在 Linux 系统上这样设置,所以也许一连几个月您都不必输入密码短语!欢迎来到安全的、使用 RSA 和 DSA 认证无密码连接的世界。
继续创建几个新的登录会话,您会发现每次
keychain
都会准确无误的“钩住”到同一 ssh-agent
进程。不要忘记您也可以使 cron 作业和脚本“钩住”正在运行的 ssh-agent
进程。要在 shell 脚本和 cron 作业中使用 ssh
或scp
命令,只要确保先用 source 命令读入并执行 ~/.ssh-agent:
|
然后,随后所有的
ssh
或 scp
命令就能够找到当前正在运行的 ssh-agent
,并且象您在 shell 中一样能建立安全的无密码连接。
|
您启动并运行
keychain
后,一定要键入 keychain --help
以熟悉 keychain
所有的命令行选项。我们要特别看一下这个选项: -clear
选项。
还记得我在 第 1 部分里阐释了使用不加密专用密钥是一种危险的做法,因为这种做法允许其它人盗用您的专用密钥不提供密码就可以从所有系统登录到您的远程帐户。唔,尽管
keychain
不易遭到这种滥用(只要您使用加密的专用密钥就行),但仍存在有可能可以利用的弱点,同 keychain
使得“钩住”长时间持续运行的 ssh-agent
进程如此容易这一事实直接相关。我想,如果闯入者以某种方式能想出我的密码或密码短语,还能登录进入我的本地系统,会发生什么事情呢?如果出于某种原因他们能以我的用户名登录,那么 keychain
就会立刻授权他们访问我的解密的专用密钥,使他们可以轻而易举的访问我的其它帐户。
现在,在继续下面的内容之前,让我们先客观的表述一下安全威胁。如果由于某种原因一些恶意的用户能以我的身份登录,
keychain
确实会允许他们访问我的远程帐户。但,尽管如此,这位闯入者要偷到我的加密的专用密钥非常困难,因为它们仍旧在磁盘上保持着加密状态。而且,得到我的专用密钥访问权要求用户真的以我的身份 登录,不单单是阅读我的目录中的文件而已。因此,滥用 ssh-agent
是比只偷到一个不加密的专用密钥困难得多的一项任务,后者只需要闯入者通过某种手段获得我在 ~/.ssh 里的文件的访问权,而不管是否是以我的身份登录。不过,如果闯入者能够成功的以我的身份登录,通过使用我的加密专用密钥他们造成相当多的额外损害。所以,如果您刚好在您不频繁登录或没有对安全缺口进行密切监视的一台服务器上使用 keychain
,那么请您考虑使用 --clear
选项以提供附加的安全层。--clear
选项允许您让 keychain
假定把每次以您的帐户的新登录都当作是可能的安全缺口,直到能证明并非如此。当您启动 keychain
时使用了 --clear
选项时,您登录的时候 keychain
会立即刷新 ssh-agent
的高速缓存里的所有专用密钥,此后才执行它的常规职责。这样,如果您是一位闯入者,则 keychain
会提示您输入密码短语而不会让您访问现有的高速缓存中的密钥集合。但是,虽然这样增强了安全性,却使情况有点更不方便,尤其好象完全是 ssh-agent
在运行,而 keychain
并没有运行。此处,情况常常是这样,一个人可以选择或者安全性更高,或更方便,但不能两者兼得。
尽管如此,使用带有
--clear
的 keychain
仍然比只用 ssh-agent
要好;请记住,当您使用 keychain --clear
时,您的 cron 作业和脚本仍然能建立无密码连接;这是因为专用密钥是在 登录时刷新,而不是在 退出时。由于从系统退出不会构成潜在的安全缺口,因而没有理由要 keychain
来刷新 ssh-agent
的密钥作为响应。因此,对于不频繁访问又需要偶而执行安全拷贝任务的服务器而言,比如,备份服务器、防火墙及路由器, --clear
选项是一个理想的选择。
既然 OpenSSH 密钥管理系列文章结束了,您就应当对 RSA 和 DSA 密钥非常熟悉,而且应当知道如何以一种方便又安全的方式使用。还务必请看看下面的参考资料:
|
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文.
- 请阅读 developerWorks 中 Daniel 关于 OpenSSH 密钥管理系列文章的 第 1 部分。
- 请访问 OpenSSH 开发主页.
- 获取
keychain
的 最新版本。 - 找到 最近的 OpenSSH 源码 tarball 和 RPM。
- 看看 OpenSSH 常见问题解答。
- PuTTY 是用于 Windows 机器优秀的
ssh
客户程序。 - 您也许觉得 O'Reilly 的 "SSH, The Secure Shell: The Definitive Guide" 一书会有所帮助。 作者的站点包含有关于这本书的信息、常见问题解答、新闻及更新内容。
- 浏览 developerWorks上 更多的 Linux 参考资料。
- 浏览 developerWorks上 更多关于开放源代码项目的参考资料。
GIT push: permission denied (public key)
GIT: I'm trying to push a file to a repo of a friend but errors on public key.
Where and how do we define public / private keys?
git remote -v returns:
any help is appreciated.
| |||||
|
You probably have to add your public key to github. https://help.github.com/articles/generating-ssh-keys
| |||
Came across this question quite late but I was facing same problem. Here is what I did that worked for me.
Use ssh instead of http. Remove origin if its http.
Add ssh url
Generate ssh key inside .ssh/ folder. It will ask for path and passphrase where you can just press enter and proceed.
Copy the key. You can view your key using. If you hadn't specified a different path then this is the default one.
Add this key to your github account. Next do
You will get a welcome message in your console.
cd into to your project folder.
git push -u origin master now works! | |||
I just had to deal with this issue. @user3445140's answer helped me, but was much more than I needed to do.
|
Generating SSH Keys
SSH keys are a way to identify trusted computers, without involving passwords. The steps below will walk you through generating an SSH key and then adding the public key to your GitHub account.
Tip: We recommend that you regularly review your SSH keys list and revoke any that haven't been used in a while.
Step 1: Check for SSH keys
First, we need to check for existing SSH keys on your computer. Open up your Git Bash and type:
ls -al ~/.ssh # Lists the files in your .ssh directory, if they exist
Check the directory listing to see if you have files named either
id_rsa.pub
or id_dsa.pub
. If you don't have either of those files, go to step 2. Otherwise, skip to step 3.Step 2: Generate a new SSH key
To generate a new SSH key, copy and paste the text below, making sure to substitute in your email address. The default settings are preferred, so when you're prompted to "Enter a file in which to save the key", just press Enter to continue.
ssh-keygen -t rsa -C "your_email@example.com" # Creates a new ssh key, using the provided email as a label # Generating public/private rsa key pair. # Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
Next, you'll be asked to enter a passphrase.
Tip: We strongly recommend a very good, secure passphrase. For more information, see Working with SSH key passphrases.
# Enter passphrase (empty for no passphrase): [Type a passphrase] # Enter same passphrase again: [Type passphrase again]
Which should give you something like this:
# Your identification has been saved in /c/Users/you/.ssh/id_rsa. # Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub. # The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
Then add your new key to the ssh-agent:
# start the ssh-agent in the background ssh-agent -s # Agent pid 59566 ssh-add ~/.ssh/id_rsa
Step 3: Add your SSH key to GitHub
Run the following code to copy the key to your clipboard.
clip < ~/.ssh/id_rsa.pub # Copies the contents of the id_rsa.pub file to your clipboard
Alternatively, using your favorite text editor, you can open the ~/.ssh/id_rsa.pub file and copy the contents of the file manually
Now that you have the key copied, it's time to add it into GitHub:
In the user bar in the top-right corner of any page, click .
Click SSH Keys in the left sidebar.
Click Add SSH key.
- In the Title field, add a descriptive label for the new key. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air".
Paste your key into the "Key" field.
Click Add key.
- Confirm the action by entering your GitHub password.
Step 4: Test everything out
To make sure everything is working, you'll now try SSHing to GitHub. When you do this, you will be asked to authenticate this action using your password, which was the passphrase you created earlier.
Open up your Git Bash and type:
ssh -T git@github.com # Attempts to ssh to github
You may see this warning:
# 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)?
Don't worry! This is supposed to happen. Verify that the fingerprint in your terminal matches the one we've provided up above, and then type "yes."
# Hi username! You've successfully authenticated, but GitHub does not # provide shell access.
If that username is yours, you've successfully set up your SSH key! Don't worry about the "shell access" thing, you don't want that anyway.
If you receive a message about "access denied," you can read these instructions for diagnosing the issue.
If you're switching from HTTPS to SSH, you'll now need to update your remote repository URLs. For more information, see Changing a remote's URL.
订阅:
博文 (Atom)