使用SSH key

为什么要使用SSH key

网上许多服务器和服务提供商都提供SSH协议连接和认证,这样的话,如果使用SSH keys的话,就可以每次在不提供用户名和密码的情况下使用服务器和服务。比如我用来发布静态Blog的GithubCoding.net和自己的VPS。

生成新的SSH key

先看自己目录下是否已经有key,打开Terminal或Git Bash,查看~/.ssh里面是否已经有文件,如果有id_rsa或其它类似文件。如果没有,则可以按下面的步骤来生成新的SSH key。

  1. 打开Terminal或Git Bash。
  2. 输入下面命令,注意其中的your_email@example.com,此email地址为github和coding的注意email地址,这样才能正常使用(未实验)。
    1
    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    这条命令将生成一个新的SSH key,有如下提示。对ssh-keygen不了解的,可以用man看其用法,也可参考网页ssh-keygen 。其它可以了解下密钥和公钥的相关知识。
    1
    Generating public/private rsa key pair.
  3. 然后会提示保存key到何处,一般的话,直接按回车,使用默认配置就好。
    1
    Enter a file in which to save the key (/home/user/.ssh/id_rsa): [Press enter]
  4. 最后提示给密钥设置密码。对于安全性要求高的可以设置下,对于我用这个SSH key登陆三个地方的人而言就不设置密码,直接回车就好。以后想修改的就直接运行命令ssh-keygen -p就可以按提示修改密钥的密码了。
    1
    2
    Enter passphrase (empty for no passphrase): [Type a passphrase]
    Enter same passphrase again: [Type passphrase again]

配置VPS及服务商SSH公钥

Github

  1. 复制公钥内容,或者直接用cat或其它文本编辑器打开,复制其内容。
    1
    $ clip < ~/.ssh/id_rsa.pub
  2. userbar-account-settings登陆Github后,点击右上角进入设置。
  3. settings-sidebar-ssh-keys在设置界面的左侧Personal settings里面的SSH and GPG keys
  4. ssh-add-ssh-key点击New SSH keyAdd SSH key
  5. ssh-key-paste然后在Title的框里填下对于这个SSH key的描述,用来区别各个不同的key。然后将第2步中复制的公钥内容粘贴到Key的文本框里。
  6. 然后点击Add SSH key

Coding.net

如前述一样,复制公钥的内容。然后登陆coding,然后在左侧依次进入“帐户”,“SSH公钥”,如前一样,在公钥名称里填写公钥的描述,公钥内容里粘贴公钥的内容。如果需要对公钥有效期有要求的话,可以修改。最后点“添加”。

VPS/Linux

  1. 登陆到VPS
  2. 在目录~/.ssh里面新建文件authorized_keys,然后将公钥内容粘贴到其中。可以用各种文本编辑器,或可以用scppsftp等工具直接将公钥文件上传至VPS。
  3. 然后就是确保sshd_config里面设置。
    /etc/ssh/sshd_config
    1
    2
    3
    4
    5
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile $h/.ssh/authorized_keys

    PasswordAuthentication no
    其中最后一行为取消明文密码登陆,只允许使用SSH key。然后倒数第二行为SSH key公钥的位置,就是前面提到的公钥储存的位置。~/.ssh/authorized_keys
  4. 到此我们就可以使用SSH key登陆了。

测试是否成功

打开Git Bash或Terminal,键入下列内容。

1
2
3
4
5
6
7
8
9
10
11
$ ssh -T git@github.com
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@git.coding.net
Hello xxx! You've connected to Coding.net via SSH successfully!
$ ssh -T username@yourvps.domain -p port
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

至此,我们就可以用这个SSH key登陆GithubCoding.net和VPS了。这样就可以直接用git和hexo布置blog和代码至三个地方。