原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ultraera.blog.51cto.com/6640392/1671351

    大家都知道ssh一直提供两种方式登录:口令认证方式和密钥认证方式,口令的方式是我们最常使用的一种,接下来和大家谈谈使用密钥的方式登录。

 

client(Windows Xshell) To Server(CentOS6.6)


  1.生成密钥(公钥与私钥),打开是xshell,选择菜单栏tools-->User key Generation Wizard...

弹出如下窗口:

    Xshell配置ssh使用密钥公钥(publice key)登录_第1张图片


注意Key Type选择RSA,Key Length选择2048,然后next:

Xshell配置ssh使用密钥公钥(publice key)登录_第2张图片

等待密钥生成成功,然后选择next:

    弹出如下窗口,填写key name,这个随意,以及key验证时的密码(千万别忘了)

Xshell配置ssh使用密钥公钥(publice key)登录_第3张图片

到这里生成密钥就已经完成,选择next,导出密钥文件,


Xshell配置ssh使用密钥公钥(publice key)登录_第4张图片

Xshell配置ssh使用密钥公钥(publice key)登录_第5张图片


2.接下来是第二步,将testkey.pub放到server,方法有很多种,你可以使用scp,ftp,亦或者u盘,这里我使用的一个lrzsz工具,如果你也知道最好,不知道的话可以看我另一篇博文,http://ultraera.blog.51cto.com/6640392/1670522

Xshell配置ssh使用密钥公钥(publice key)登录_第6张图片


如果出现报错如下图:暂时关闭防火墙即可。

Xshell配置ssh使用密钥公钥(publice key)登录_第7张图片

将密钥文件上传到server之后,需要做如下操作,

把testkey.pub的内容替换到/root/.ssh/

1
2
3
4
5
6
7
8
9
10
11
[root@ test  ~] # ls -a 
.                  ..                 testkey.pub
[root@ test  ~] # mkdir .ssh
[root@ test  ~] # chmod 700 .ssh/
[root@ test  ~] # cd .ssh/
[root@ test  . ssh ] # cat ../testkey.pub > ./authorized_keys
[root@ test  . ssh ] # ls
authorized_keys
[root@ test  . ssh ] # chmod 600 authorized_keys
[root@ test  ~] # diff testkey.pub .ssh/authorized_keys 
[root@ test  ~] #

确保文件内容相同。


3.接下来配置server的ssh服务(/etc/ssh/sshd_config)只允许使用密钥登录不允许口令登录:

1
2
3
4
5
6
# line 66
PasswordAuthentication no                     # 不允许口令登录
 
# line 48,49
PubkeyAuthentication  yes                      # 使用key登录
AuthorizedKeysFile . ssh /authorized_keys       # key的名字

保存退出后,重启ssh服务。


4.所有配置都已经完成,接下来进行测试

    首先使用口令登录:

Xshell配置ssh使用密钥公钥(publice key)登录_第8张图片可以看到这里password选项已经变成灰色,并且不可选,并且默认选项改为public Key。

    那么,接下来,我们选择当时的key,并且输入当时设置的密码,

Xshell配置ssh使用密钥公钥(publice key)登录_第9张图片

Xshell配置ssh使用密钥公钥(publice key)登录_第10张图片

好了,以上就是配置xshell使用密钥ssh登录centos的全部过程。


注:服务器防火墙需关闭,否则无法链接!!!


关闭Selinux

如果不关闭selinux, 使用密钥登陆会提示 “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 回车,然后重启系统

selinux是Redhat、CentOS特有的安全机制,这个东西很复杂,我们从来都不要开启它,因为selinux开启后,会产生诸多莫名其妙的bug.


本文出自 “一杯白开水” 博客,请务必保留此出处http://ultraera.blog.51cto.com/6640392/1671351