使用SSH key
为什么要使用SSH key
网上许多服务器和服务提供商都提供SSH协议连接和认证,这样的话,如果使用SSH keys的话,就可以每次在不提供用户名和密码的情况下使用服务器和服务。比如我用来发布静态Blog的Github,Coding.net和自己的VPS。
生成新的SSH key
先看自己目录下是否已经有key,打开Terminal或Git Bash,查看~/.ssh
里面是否已经有文件,如果有id_rsa或其它类似文件。如果没有,则可以按下面的步骤来生成新的SSH key。
- 打开Terminal或Git Bash。
- 输入下面命令,注意其中的
your_email@example.com
,此email地址为github和coding的注意email地址,这样才能正常使用(未实验)。这条命令将生成一个新的SSH key,有如下提示。对1
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-keygen
不了解的,可以用man
看其用法,也可参考网页ssh-keygen 。其它可以了解下密钥和公钥的相关知识。1
Generating public/private rsa key pair.
- 然后会提示保存key到何处,一般的话,直接按回车,使用默认配置就好。
1
Enter a file in which to save the key (/home/user/.ssh/id_rsa): [Press enter]
- 最后提示给密钥设置密码。对于安全性要求高的可以设置下,对于我用这个SSH key登陆三个地方的人而言就不设置密码,直接回车就好。以后想修改的就直接运行命令
ssh-keygen -p
就可以按提示修改密钥的密码了。1
2Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
配置VPS及服务商SSH公钥
Github
- 复制公钥内容,或者直接用
cat
或其它文本编辑器打开,复制其内容。1
$ clip < ~/.ssh/id_rsa.pub
- 登陆Github后,点击右上角进入设置。
- 在设置界面的左侧Personal settings里面的SSH and GPG keys。
- 点击New SSH key或Add SSH key。
- 然后在Title的框里填下对于这个SSH key的描述,用来区别各个不同的key。然后将第2步中复制的公钥内容粘贴到Key的文本框里。
- 然后点击Add SSH key。
Coding.net
如前述一样,复制公钥的内容。然后登陆coding,然后在左侧依次进入“帐户”,“SSH公钥”,如前一样,在公钥名称里填写公钥的描述,公钥内容里粘贴公钥的内容。如果需要对公钥有效期有要求的话,可以修改。最后点“添加”。
VPS/Linux
- 登陆到VPS
- 在目录
~/.ssh
里面新建文件authorized_keys
,然后将公钥内容粘贴到其中。可以用各种文本编辑器,或可以用scp
或psftp
等工具直接将公钥文件上传至VPS。 - 然后就是确保
sshd_config
里面设置。其中最后一行为取消明文密码登陆,只允许使用SSH key。然后倒数第二行为SSH key公钥的位置,就是前面提到的公钥储存的位置。/etc/ssh/sshd_config 1
2
3
4
5RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile $h/.ssh/authorized_keys
PasswordAuthentication no~/.ssh/authorized_keys
。 - 到此我们就可以使用SSH key登陆了。
测试是否成功
打开Git Bash或Terminal,键入下列内容。
1 | $ ssh -T git@github.com |
至此,我们就可以用这个SSH key登陆Github,Coding.net和VPS了。这样就可以直接用git和hexo布置blog和代码至三个地方。