Linux系统的远程登陆

使用密钥认证机制远程登录Linux

SSH服务支持一种安全认证机制,即密钥认证。所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(publickey), 任何人都可以看到其内容,用于加密;另一个称为密钥(privatekey),只有拥有者才能看到,用于解密。通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。 ssh的密钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和密钥。如何使用密钥认证登录linux服务器呢?

  1. 下载生成密钥工具

在本章前面阿铭提供的putty下载地址里,您一定看到了很多可以下载的东西,不过阿铭只让您下载了一个putty.exe. 因为当时只用到这一个工具,其实完整的putty程序包含很多个小工具的,所以这次阿铭建议您直接下载个完整包 http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip 下载后解压,其中puyttygen.exe就是咱们这一小节中所要用到的密钥生成工具。

  1. 生成密钥对

关于密钥的工作原理,如果您感兴趣可以到网上查一查,阿铭不想介绍太多无关知识点,不过,了解一下也没有什么不好。双击puttygen.exe, 右下角 “Number of bits in a generated key” 把 “1024” 改成 “2048”, 然后点 “Generate”, 这样就开始生成密钥了,请来回动一下鼠标,这样才可以快速生成密钥对,大约十几秒后就完成了。 “Key comment:” 这里可以保持不变也可以自定义,其实就是对该密钥的简单介绍; “Kye passphrase:” 这里用来给您的密钥设置密码,这样安全一些,当然也可以留空,阿铭建议您设置一个密码;”Confirm passphrase:” 这里再输入一遍刚刚您设置的密码。

  1. 保存私钥

点 “Save private key”, 选择一个存放路径,定义一个名字,点 “保存”。请保存到一个比较安全的地方,谨防丢掉或被别人看到。

  1. 复制公钥到Linux

回到刚才生成密钥的窗口,在 “Key” 的下方有一段长长的字符串,这一串就是公钥的内容了,把整个公钥字符串复制下来。然后粘贴到您的Linux的 /root/.ssh/authorized_keys 文件里。下面请跟着阿铭一起来做操作:

[root@localhost ~]# mkdir /root/.ssh
[root@localhost ~]# chmod 700 /root/.ssh

首先创建/root/.ssh 目录,因为这个目录默认是不存在的,然后是更改权限。 关于 mkdirchmod 两个命令,阿铭会在后续章节详细介绍,暂时您只要知道是用来创建目录和更改权限的就行了。然后是把公钥内容粘贴进 /root/.ssh/authorized_keys 文件。

[root@localhost ~]# vi /root/.ssh/authorized_keys

回车后,按一下 ‘i’ 进入编辑模式,然后直接点击鼠标右键就粘贴了,这是putty工具非常方便的一个功能。粘贴后,按一下 ‘Esc’ 键,然后输入 :wq 回车保存退出该文件。

  1. 关闭Selinux

如果不关闭selinux, [3] 使用密钥登陆会提示 “Server refused our key”, 关闭方法:

[root@localhost ~]# setenforce 0

这个只是暂时命令行关闭selinux, 下次重启Linux后selinux还会开启。永久关闭selinux的方法是:

[root@localhost ~]# vi /etc/selinux/config

回车后,把光标移动到 “SELINUX=enforcing” 按一下 i 键,进入编辑模式,修改为

SELINUX=disabled

按 “Esc”, 输入 :wq 回车,然后重启系统

  1. 设置putty通过密钥登陆

打开putty.exe点一下您保存好的session,然后点右侧的 “Load”, 在左侧靠下面点一下 “SSH” 前面的 + 然后选择 “Auth”, 看右侧 “Private key file for authentication:” 下面的长条框里目前为空,点一下 “Browse”, 找到我们刚刚保存好的私钥,点”打开”。此时这个长条框里就有了私钥的地址,当然您也可以自行编辑这个路径。然后再回到左侧,点一下最上面的 “Session”, 在右侧再点一下 “Save”.

  1. 使用密钥验证登陆Linux

保存好后session, 点一下右下方的 “Open”. 出现登陆界面,您会发现和原来的登陆提示内容有所不同了。

login as: root
Authenticating with public key "rsa-key-20130509"
Passphrase for key "rsa-key-20130509":
Last login: Thu May  9 16:17:13 2013 from 10.72.137.43
[root@localhost ~]#

现在不再输入root密码,而是需要输入密钥的密码,如果您先前在生产密钥的时候没有设置密码,您输入root后会直接登陆系统。

[1] DHCP服务,是自动分配IP的服务,我们平时所在的办公室网络环境里,都有DHCP服务。另外家用的路由器像Tplink 或者 dlink 都有DHCP服务的功能。
[2] 这一部分阿铭是在windows XP上配置的,windows7 的配置道理也是一样的。
[3] sel