使用密钥登陆分为3步:
一、生成密钥(公钥与私钥);
二、放置公钥(Public Key)到服务器~/.ssh/authorized_key文件中;
三、配置ssh客户端使用密钥登陆。
linux
打开Xshell,在菜单栏点击“tools”,在弹出的菜单中选择“User Key Generation Wizard...”(密钥生成向导),以下图:算法
弹出“User Key Generation Wizard”对话框,在“Key Type”项选择“RSA”公钥加密算法,“Key Length”选择为“2048”位密钥长度,以下图:shell
点击“Next”,等待密钥生成:
api
继续下一步,在“Key Name”中输入Key的文件名称,我这里为“key”;在“Passphrase”处输入一个密码用于加密私钥,并再次输入密码确认,以下图:
服务器
点击“Next”,密钥生成完毕(Public key Format选择SSH2-OpenSSH格式),这里显示的是公钥,咱们能够复制公钥而后再保存,也能够直接保存公钥到文件,以下图。私钥这里不显示,能够在“User Key Mangager...”导出到文件:
ssh
点击“Save as file...”按钮,将公钥(Public key)保存到磁盘,文件名为“key.pub”,备用。ide
使用到Xshell登陆到服务器,进入到“/root/.ssh/”目录,运行rz命令(若是没有rz命令,运行yum install lrzsz安装),将key.pub发送到服务器,而后运行以下命令,将公钥(Public Key)导入到“authorized_keys”文件:测试
打开Xshell,点击“New”按钮,弹出“New Session Properties”对话框,在“Connection”栏目中,输入刚刚配置好公钥(Public Key)的IP地址和端口,以下图所示:加密
点击左侧的“Authentication”,切换到认证栏目,在“Method”选择“Public Key”认证,用户名输入“root”(公钥是放在root目录下的.ssh文件夹中),在“User Key”中选择咱们刚才生成的私钥“key”,“Passphrase”中输入私钥的加密密码。spa
点击肯定,Xshell配置ssh免密码登陆配置完成。
其实,linux下的ssh-keygen下也能够生成密钥,在linux下输入ssh-keygen -t rsa,在提示下,输入密钥的名称(这里为key)和私钥加密密码,既完成密钥生成。生成的两个文件中,“key”为私钥,“key.pub”为公钥。以下图所示:
修改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登陆方式成功。