Raspberry Pi技术笔记之二:配置密钥认证方式自动登录

一般来说,我们使用ssh登陆linux有密码和密钥两种认证方式,相较于前者,后者安全性更高,而且可以在不借助外部工具的情况下做到自动登录,下文介绍密钥认证的配置方法,适用于Raspberry Pi及linux/unix系统。

Macbook作为我的本地主机,Raspberry Pi作为需要ssh登录的远程主机,在本地主机上使用ssh-keygen命令生成一对密钥,即留在本地的『私钥』和分发到远程主机的『公钥』。

  1. 在本地主机上生成rsa密钥对,所有选择使用缺省选择即可,第三,四项中Enter passphrase建设留空,因为如果此处设置密码后每次ssh登录的时候仍然会需要输入此密码,当然如果是安全性要求较高的生产环境则建议设置此密码
    pagebrin:~ berton$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/berton/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /Users/berton/.ssh/id_rsa.
    Your public key has been saved in /Users/berton/.ssh/id_rsa.pub.
    The key fingerprint is:
    be:d9:d7:35:20:46:35:0b:f9:2f:34:2e:6d:58:e9:c9 root@raspberry
    The key's randomart image is:
    +--[ RSA 2048]----+
    ... ...
  2. 上传公钥到需要登录的远程主机,以密码认证方法登录到远程主机,切换至需要设置自动登录的用户下(以root用户为例),在其家目录下创建.ssh目录,用vi等文本编辑器将公钥内容(/$HOME/.ssh/id_rsa.pub)粘贴至authorized_keys文件即可,需要注意的是公钥内容一般为一个较长的行,中间不会有分行,需要留意粘贴后是否分行。
    [root@raspberry ~]# cd $HOME
    [root@raspberry ~]# mkdir .ssh
    [root@raspberry ~]# cd .ssh
    [root@raspberry .ssh]# vi authorized_keys
  3. 本地主机添加用于指定自动登录的config配置文件,需要说明项为:Host 指定自动登录主机名字符串
    HostName 远程主机的IP地址 或是 可以正确解析的主机名
    User 指定远程登录的用户名

    pagebrin:~ berton$ cd $HOME/.ssh/
    pagebrin:~ berton$ vi config
    Host pi
    HostName 192.168.168.2
    User root
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
  4. 至此配置完毕,在本地主机上使用 ssh 主机名字符串 即可自动登录
    pagebrin:~ berton$ ssh pi
    Warning: Permanently added '192.168.168.2' (RSA) to the list of known hosts.
    Last login: Sun Apr  6 18:42:02 2014 from 192.168.168.3
    [root@raspberry nas]# uname -a
    Linux raspberry 3.10.29-2-ARCH #1 PREEMPT Mon Feb 10 04:04:41 MST 2014 armv6l GNU/Linux
    [root@raspberry nas]#