公钥私钥那点儿事

所谓安全性这种东西,越是做得完美,使用的时候就越是烦人。
在我看来,密码忘了和密钥丢了基本是一样的问题,说不清哪个概率高。
而使用带passphrase的密钥,用起来简直就是“我勒个去”

之后,我发现了下面这个方法,使用ssh-agent替我记住passphrase
记录如下:

Linux端ssh登入github、heroku

#生成密钥对,用-C "..." 指定标识,不指定则默认使用"用户名@主机名"
#一般情况下,指定保存私钥计算机的标识
#网上乱教使用-b 1024,rsa默认2048呢,用什么1024 -_-+
#记得输入passphrase,否则后文不用看了
ssh-keygen -t rsa -C "donneryst-vps"

#公钥递交给heroku,命令操作
heroku keys:add

#公钥递交给github,网上操作
#登入github, Account settings->SSH Keys->Add SSH Key

#开启ssh-agent
eval `ssh-agent`
#添加私钥,输入passphrase
ssh-add ~/.ssh/id_rsa

#执行各种需要验证密钥的远程操作
ssh -T git@github.com
...

#关闭ssh-agent
ssh-agent -k

疑难杂症:

Could not open a connection to your authentication agent.

#必须先开启ssh-agent,才能添加私钥
eval `ssh-agent`
#查看ssh-agent内密钥情况
ssh-add -l

git push每次都要求密码

#检查一下你的.git/config
#你是不是git clone了一个https://开头的玩意!!
#让https去死吧……
[remote "origin"]
fetch = + refs/heads/*:refs/remotes/origin/*
url = https://username@github.com/username/projectname.git
#改为下文这样,就可以直接rsa密钥认证,不走用户名和密码了
[remote "origin"]
fetch = + refs/heads/*:refs/remotes/origin/*
url = git@github.com:username/projectname.git

Windows端Putty登入linux

#首先吧,准备一个密钥对,puttygen太慢了,还是用linux来
#记得随便取个名,比如aaa,别把id_rsa覆盖了
ssh-keygen -t rsa -C "jhpx-windows"
#公钥拼去authorized_keys后面,然后就可以干掉了
cat ~/.ssh/aaa.pub >> ~/.ssh/authorized_keys
rm ~/.ssh/aaa.pub

下载私钥到windows

祭出你的filezilla、连接你的SFTP吧,
别扯什么cygwin、mingw下的命令行,累死你。
别忘了下完就把服务器上的私钥删掉

下下来的私钥文件改个名,叫jhpx-windows.pem,然后打开puttygen,
load->输入passphrase->save private key,命名jhpx-windows.ppk
这样就可以在putty中使用了

每次登入还要输入passphrase怎么办?
使用pageant,用法比ssh-agent简单多了,
双击启动,add key,选择文件,over