吃饭的时候吃饭,睡觉的时候睡觉,工作的时候工作,学习的时候学习......
❝ 客户端使用ssh协议登录SLES11时使用公玥验证用户身份 ❞
作者:彭新 日期:2014-06-18 分类:SUSE 点击: 来源:www.wo81.com

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !

公私玥对+用户名身份验证

我们一般远程登录服务器都是使用用户名和密码组合验证用户身份的,除此之外,我们也可以使用公私玥对实现用户身份的验证。

使用secureCRT登录SLES11,输入用户名后,总有如下提示:

Public-key authentication with the server for user XXX failed.

Please verify username and public/private key pair.

点击skip,继续输入密码即可登录,这很正常吧。可是每次都出现的这个提示是什么意思呢?

这就是SLES11支持的公私玥对身份验证。

大家知道,公私玥是一种不对称的加密方法。

举个例子:假设有甲和乙两台服务器,如果各自都有一对公私玥,并且甲乙都给对方分享了自己的公钥,这样当甲乙之间通信时,就有两种选择:

1、甲使用乙的公钥加密数据并发送给乙,乙使用自己的私钥并且也只能使用自己的私钥解密。如果别人没有乙的私钥,即使的截取到了甲发给乙的数据也无法解密。

2、甲使用自己的私钥加密数据并发送给乙,因为甲的私钥只有它自己有,所有乙可以通过甲的公钥对数据进行解密同时确认发送信息的就是甲,不是别人冒充的。这第二个就是ssh通过公钥验证用户身份的原理。

根据如上第2条,我们在客户端生成自己的公私玥对(或者服务器生成后发给客户端也行),并将公钥上传给服务器,服务器将其加入信任列表,这样客户端登录服务器时就可以不使用用户名、密码的组合,而是使用用户名+私钥+passphrase 的组合了,如果passphrase为空,那就避免了输入密码的过程。

如何生成公私玥对

一般情况下,我们使用类型DSA,长度1024 bits的公钥文件和私钥文件。如下介绍SLES11上和secureCRT上如何生成公私玥对。

SLES11

在目录~/.ssh 下产生了 公钥文件(id_dsa.pub)和私钥文件(id_dsa),文件名可以改变,只要文件名一样(公钥多了个.pub的后缀)即可。

# ssh-keygen -t dsa -b 1024
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 建议这里输入密码,这样即便别人拿到你的私钥也因为没有这个密码而无法导入
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
dd:e1:b9:37:b8:8f:e9:10:f4:65:3f:8c:01:bf:ed:a8 [MD5] root@peng
The key's randomart image is:
+--[ DSA 1024]----+
|           .     |
|            o    |
|          . .oo  |
|         o + =*. |
|        S o =o +.|
|           . oo .|
|          . o.o. |
|           ..= . |
|           E=..  |
+--[MD5]----------+

secureCRT

创建了一个ssh2的连接后,修改这个session的Properties,在ssh2列表下,右侧Authentication区域,选中PublicKey,点击其右侧Properties,选中use global public key setting,在Global settings区域,选中use identity or certificate file,然后点击下面的Create identity file按钮,下一步,key type选择DSA,passphrase一定要填写而且要记好,下一步,key length in bits 填写1024,等待其生成,然后下一步,选择openssh key format,注意公私玥对的存储路径,然后点击完成,提示是否上传,选择否,点击两次ok即可完成设置。

找到公私玥对的生成位置,私钥为Identity,公钥为Identity.pub

将客户端的公钥上传到服务器

随意选择使用ftp、sftp,scp,rz等途径上传,注意上传到服务器的root用户的 ~/.ssh/目录。文件名可以改变,只要公私玥文件名一样(公钥多了个.pub的后缀)即可。

将客户端的公钥加入服务器的信任列表

在服务器上执行如下命令(假设公钥文件为Identity.pub)。

注意,如果服务器上没有.ssh目录,可以执行一次ssh-keygen -t dsa -b 1024 命令,这样不但产生了服务器自己公私玥对,而且还生成了.ssh目录。

# cd ~/.ssh

# pwd

/root/.ssh

# ls

Identity.pub

# cat Identity.pub >>  authorized_keys

# ll

total 8

-rw-r--r-- 1 root root 601 Jun 18 16:29 Identity.pub

-rw-r--r-- 1 root root 601 Jun 18 16:35 authorized_keys

# chmod 600 *

# ll

total 8

-rw------- 1 root root 601 Jun 18 16:29 Identity.pub

-rw------- 1 root root 601 Jun 18 16:35 authorized_keys

注:如上修改权限,是为了保证密钥目录及其文件的安全。

关于Xmanager

使用Xstart,使用ssh协议登录SLES11,必须要服务器将客户端的私钥加入信任列表,并且在Xstart中导入客户端的私钥(导入需要导入密码passphrase)才能成功,否则无法登录,即便身份验证选择的是Password也不行(有时可以成功)。

不知道为什么Xstart中只能生成公钥,没有找到生成私钥的地方!!!所以我在服务器上生成了一组传到客户端来使用,并从服务器上删除。当然, 使用secureCRT也可以生成。

本文链接:客户端使用ssh协议登录SLES11时使用公玥验证用户身份

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源,谢谢 !