ssh 登录提供两种认证方式:口令(密码)认证方式和密钥认证方式。其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到 linux / unix 的方法。

使用密钥登录分为3步:
1、生成密钥(公钥与私钥);
2、放置公钥(Public Key)到服务器~/.ssh/authorized_key文件中;
3、配置ssh客户端使用密钥登录。

一、生成密钥公钥(Public key)与私钥(Private Key)

打开Xshell,在菜单栏点击“tools”,在弹出的菜单中选择“User Key Generation Wizard...”(密钥生成向导),如下图:

xshell_make_public-key-01

弹出“User Key Generation Wizard”对话框,在“Key Type”项选择“RSA”公钥加密算法,“Key Length”选择为“2048”位密钥长度,如下图:

xshell_make_public-key-02

点击“Next”,等待密钥生成:
xshell_make_public-key-03

继续下一步,在“Key Name”中输入Key的文件名称,我这里为“key”;在“Passphrase”处输入一个密码用于加密私钥,并再次输入密码确认,如下图:
xshell_make_public-key-04

点击“Next”,密钥生成完毕(Public key Format选择SSH2-OpenSSH格式),这里显示的是公钥,我们可以复制公钥然后再保存,也可以直接保存公钥到文件,如下图。私钥这里不显示,可以在“User Key Mangager...”导出到文件:
xshell_make_public-key-05

点击“Save as file...”按钮,将公钥(Public key)保存到磁盘,文件名为“key.pub”,备用。

二、上传公钥(Public Key)到服务器:

使用到Xshell登录到服务器,进入到“/root/.ssh/”目录,运行rz命令(如果没有rz命令,运行yum install lrzsz安装),将key.pub发送到服务器,然后运行如下命令,将公钥(Public Key)导入到“authorized_keys”文件:

  1. [root@localhost ~]# cd /root/.ssh/
  2. [root@localhost .ssh]# rz
  3. rz waiting to receive.
  4. [root@localhost .ssh]# cat me.pub >> authorized_keys
  5. [root@localhost .ssh]# chmod 600 authorized_keys
  6. [root@localhost .ssh]# ls
  7. authorized_keys known_hosts me.pub
  8. [root@localhost .ssh]# cat authorized_keys
  9. ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4VCOWFrARc1m3MfEAL50v2Z2siavO3Ijpr/LZ00EZah8EjfZhqjAc/agkljyXmNGpVDpRdtlYco8h3P5vegXOEgKcX74fDYm0vNdVABVD1XSD8ElNyLTCCNk7rZJbi3htJox3Q1n0vnMmB5d20d9occkAx4Ac94RWNS33EC5CszNTMgAIn+uZl0FlQklS1oSyWFahSTWyA6b33qG7Y5E4b6J/caObnPx6EgtBrgi97gXJHZWyYlGrpWmUuhPqs5XToRB08CVxAyzewtq1MXv0p+Po4L1pbHLRf+TSoZ5RSBZZjY4/JMAzdXHNtnAyO0j0VNGbBXKUcNSAHZ

xshell_public-key_login_upload

三、配置Xshell使用密钥认证方式登录到服务器:

打开Xshell,点击“New”按钮,弹出“New Session Properties”对话框,在“Connection”栏目中,输入刚刚配置好公钥(Public Key)的IP地址和端口,如下图所示:

xshell_public-key_set_02

点击左侧的“Authentication”,切换到认证栏目,在“Method”选择“Public Key”认证,用户名输入“root”(公钥是放在root目录下的.ssh文件夹中),在“User Key”中选择我们刚才生成的私钥“key”,“Passphrase”中输入私钥的加密密码。

xshell_public-key_set_01

点击确定,Xshell配置ssh免密码登录配置完成。

附录:linux ssh-keygen命令生成密钥:

其实,linux下的ssh-keygen下也可以生成密钥,在linux下输入ssh-keygen -t rsa,在提示下,输入密钥的名称(这里为key)和私钥加密密码,既完成密钥生成。生成的两个文件中,“key”为私钥,“key.pub”为公钥。如下图所示:

linux_make_public-key

CentOS7关闭ssh密码登录

修改SSH配置文件

    SSH配置文件的位置:/etc/ssh/sshd_config

    找到其中的这个参数配置:

   PasswordAuthentication   将这两个参数值修改为no:  PasswordAuthentication no

有资料说还有修改一个ChallengeResponseAuthentication 为no。默认值为no,但我改成yes试了试,也可以登录。

这个参数 “是否允许质疑-应答认证”,但不明白这是什么意思。

   

并重启SSH服务

注意:CentOS7重启服务和之前的不一样了

  # systemctl  restart sshd.service

    现在我们就已经限制用户的SSH登录方式,只允许用key方式登录。    进一步测试,如果我们用一台不带信任key的机器尝试登录,那么会提示如下信息。

Permission denied(publickey,gssapi-keyex,gssapi-with-mic).

    证明限制SSH登录方式成功。


Logo

更多推荐