说明:
ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式。其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法。
使用密钥登录分为3步:
1、生成密钥(公钥与私钥);
2、放置公钥(Public Key)到服务器~/.ssh/authorized_key文件中;
3、配置ssh客户端使用密钥登录。
实现:
一、生成密钥公钥(Public key)与私钥(Private Key)
打开Xshell,在菜单栏点击“tools”,在弹出的菜单中选择“User Key Generation Wizard…”(密钥生成向导),如下图:
弹出“User Key Generation Wizard”对话框,在“Key Type”项选择“RSA”公钥加密算法,“Key Length”选择为“2048”位密钥长度,如下图:
点击“Next”,等待密钥生成:
继续下一步,在“Key Name”中输入Key的文件名称,我这里为“coolnull”,名字可以任意填写;在“Passphrase”处输入一个密码用于加密私钥,并再次输入密码确认。这里偷懒就留空,后面加载这个密钥就不需要密码了。如下图:
点击“Next”,密钥生成完毕(Public key Format选择SSH2-OpenSSH格式),这里显示的是公钥,我们可以复制公钥然后再保存,也可以直接保存公钥到文件,如下图。私钥这里不显示,可以在“User Key Mangager…”导出到文件:
点击“Save as file…”按钮,将公钥(Public key)保存到磁盘,文件名为“coolnull.pub”,备用。
二、上传公钥(Public Key)到服务器:
使用到Xshell登录到服务器,进入到“/root/.ssh/”目录,运行rz命令(如果没有rz命令,运行yum install lrzsz安装),将coolnull.pub发送到服务器,然后运行如下命令,将公钥(Public Key)导入到“authorized_keys”文件:
[root@localhost ~]# cd /root/.ssh/ //这里是cat到root/.ssh目录下,如果其他用户需要key登陆请切换到其他用户目录去 [root@localhost .ssh]# cat coolnull.pub >> authorized_keys [root@localhost .ssh]# chmod 600 authorized_keys [root@localhost .ssh]# ls authorized_keys known_hosts coolnull.pub [root@localhost .ssh]# cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuLm6azuGHq8SjcusiLVHdNJXToDUI6A9VYSb0Ybsyc6n+MsqOA+Jw6yR1P6ppvDm3xuUIuwZDBpplVB1vB9VxqYdAX7uQh81wObaru3zBe6D/XrlE8jpNjRgolg0pzxDi4QmeG4jdZM38TZXA/TsBoEBg3LeEgmlKRW24bL3FYeucriindFZAZs/raUmHUrL09TuCzhNw1kGjSIF4xh3USGT0UVk+sHx7NnbCoJ57TJR0qpjue/4xCXDUgpUjguYn4fM5YcHDfh37OmsmfHiet/kCfKqZEiADaqDiqqzOBN/oHANP/84eQdT3eugO+/Mz5fE9P3djQrHYnOOLHy8YQ==
三、配置Xshell使用密钥认证方式登录到服务器:
打开Xshell,点击“New”按钮,弹出“New Session Properties”对话框,在“Connection”栏目中,输入刚刚配置好公钥(Public Key)的IP地址和端口,如下图所示:
点击左侧的“Authentication”,切换到认证栏目,在“Method”选择“Public Key”认证,用户名输入“root”(公钥是放在root目录下的.ssh文件夹中),在“User Key”中选择我们刚才生成的私钥“coolnull”因为只是演示就放空了,“Passphrase”中输入私钥的加密密码,这里是留空。
附录:
其实,linux下的ssh-keygen下也可以生成密钥,在linux下输入ssh-keygen -t rsa,在提示下,输入密钥的名称(这里为key)和私钥加密密码,既完成密钥生成。生成的两个文件中,“key”为私钥,“key.pub”为公钥。具体可以参考这篇文章SecureCRT通过密钥登录