前面介绍了linux的ssh远程登录协议和ssh无密码登录方式,这里在windows下通过secureCRT和putty登录linux来看一下具体的密钥创建,配置和登录,也算做个备忘录吧。

1.linux下创建密钥对

        还记得前面说的怎么创建密钥对吧:

 

[sshtest@localhost ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sshtest/.ssh/id_rsa): 
Created directory '/home/sshtest/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/sshtest/.ssh/id_rsa.
Your public key has been saved in /home/sshtest/.ssh/id_rsa.pub.
The key fingerprint is:
22:e4:e8:60:24:b5:ac:bd:53:52:4a:b1:08:a0:e9:7b sshtest@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|+ o              |
|o= +             |
|=.= o            |
|++ *             |
|oo= + . S        |
|.o.+ . .         |
| .+E             |
|  ..             |
|                 |
+-----------------+

 

        如果想登录的时候不用输创建密钥的密码,那么上面就直接回车,不用输。执行完这个过程后,我们的密钥对就成功创建了,在.ssh这个隐藏目录中。查看发现有两个文件,一个私钥id_rsa,一个公钥id_rsa.pub,然后我们将公钥的内容输出到一个叫authorized_keys的文件中:

 

[sshtest@localhost ~]$ cd .ssh/
[sshtest@localhost .ssh]$ ls
id_rsa  id_rsa.pub
[sshtest@localhost .ssh]$ cat id_rsa.pub >> authorized_keys
[sshtest@localhost .ssh]$ ls
authorized_keys  id_rsa  id_rsa.pub

 

        为什么要输出到authorized_keys的文件中呢,前面也说过了,因为在/etc/ssh/sshd_config文件中配置的,默认为authorized_keys文件,如果有很多的公钥,就都输出到这个文件中。然后我们将私钥id_rsa拷出来放在我们的windows的某个目录中,密钥登录的时候需要这个玩意,最后重启sshd服务,/etc/init.d/sshd restart成功后,我们就可以在windows上通过secureCRT或者putty等软件来登录到linux的某个用户了,这个用户就是authorized_keys这个文件所在的用户。

        1).secureCRT登录

           运行secureCRT软件,输入要登录到的主机的IP地址,port端口,如果没特别设置默认为22以及要登录到用户的用户名,然后在authentication选项中只勾选PublicKey或者将PublicKey选项提到首选,再选中它点击Properties:

创建PEM CRT文件 crt怎么创建目录_密钥登录

 

在弹出的对话框中点击这个按钮选中你拷出来的私钥点击OK,然后点击当前窗体的connect按钮:

创建PEM CRT文件 crt怎么创建目录_putty_02

 

最后会提示要输入创建密钥时的密码,如果设置过:

创建PEM CRT文件 crt怎么创建目录_创建PEM CRT文件_03

 

这样我们就可以登录到linux中指定的用户了:

创建PEM CRT文件 crt怎么创建目录_putty_04

 

这个过程中一定要记得将.ssh目录权限设置为700,将authorized_keys文件的权限设置为600,不然是会报错的:

创建PEM CRT文件 crt怎么创建目录_密钥登录_05

 

        2).putty登录

           用putty就稍微麻烦了一点,需要下载一个叫puttygen的东东来转换私钥的格式,前面操作都是一样的,创建密钥对,然后修改权限,将私钥拷到windows的某个目录。putty私钥的格式不同,所以需要puttygen来转换。运行puttygen软件,点击Load选择拷出来的私钥:

创建PEM CRT文件 crt怎么创建目录_putty_06

 

如果找不到你的私钥文件,就点击右下角的文件类型,选择显示所有文件,因为私钥文件在linux下生成的,没有扩展名:

创建PEM CRT文件 crt怎么创建目录_secureCRT_07

 

选择私钥之后会提示输入创建密钥时设置的密码,如果设置过:

创建PEM CRT文件 crt怎么创建目录_创建PEM CRT文件_08

 

转换成功,接下来就需要保存我们转换格式后生成的私钥文件,点击Save private key按钮保存:

创建PEM CRT文件 crt怎么创建目录_密钥登录_09

 

putty的私钥扩展名是.ppk,这时你发现私钥文件已经保存成功,接下来就是使用putty密钥登录:

创建PEM CRT文件 crt怎么创建目录_密钥登录_10

运行putty软件,左边选择Connection->SSH->Auth点击Browse按钮选择上面转换格式后生成的私钥文件.ppk:

创建PEM CRT文件 crt怎么创建目录_密钥登录_11

 

然后在左边选择Session输入要登录主机linux的IP和port,点open:

创建PEM CRT文件 crt怎么创建目录_创建PEM CRT文件_12

 

最后输入要登录的用户的用户名和创建私钥时设置的密码,如果设置过:

创建PEM CRT文件 crt怎么创建目录_linux_13

 

2.windows下secureCRT和putty创建密钥对

假设我们已经将公钥上传到了主机为key.pub,不能像上面直接输出到authorized_keys,必须要转换成openssh能识别的格式,这里就要ssh-keygen -i -f key.pub >> authorized_keys,authorized_keys文件必须是600的权限,而且要存在于.ssh隐藏文件中,如果没有就创建,权限为700,最后重启sshd服务/etc/init.d/sshd restart。下面看看两种创建密钥对的方式和密钥登录的方式。

        1).secureCRT创建和登录

           运行secureCRT软件,和上面一样选择PublicKey,然后点Properties,在弹出的对话框中选择Create Identity File来创建密钥对:

创建PEM CRT文件 crt怎么创建目录_密钥登录_14

 

然后下一步->选择算法DSA或者RSA再下一步->设置密钥密码再下一步->设置密钥长度默认1024下一步->下一步->选择密钥对保存的位置,默认为我的文档中再完成->是否上传,选择否。这样密钥对就生成了,私钥为Identity,公钥为Identity.pub:

创建PEM CRT文件 crt怎么创建目录_secureCRT_15

 

将公钥拷到linux主机上在我们要登录的用户目录中执行上面的红色部分的操作,然后通过PublicKey指定我们生成的Identity私钥文件登录,向上面一样。

        2).putty创建和登录

           putty创建密钥对还是要靠puttygen这个软件,运行puttygen软件,点击Generate按钮,自动创建密钥对。也可以设置密钥的长度,默认为2048,1024要比2048的创建速度快些。创建完成后,可以看到公钥的内容,然后设置密钥密码,分别保存公钥和私钥,然后将公钥上传到主机上执行上面红色部分操作,也可以只保存私钥然后将公钥内容复制到linux主机的authorized_keys文件中:

创建PEM CRT文件 crt怎么创建目录_创建PEM CRT文件_16

创建PEM CRT文件 crt怎么创建目录_密钥登录_17

最后再运行putty,指定私钥登录。