使用ssh秘钥登录linux

Posted by Chen Blog on December 5, 2018

我想大家和我一样经常会用到putty登录自己的linux系统。每一次都要输入密码,觉得很麻烦。而且我还觉得不安全。一直想配置通过秘钥来登录,就可以不输入密码了。方便很多。下面就是我的配置过程。

实现原理

用户在本地生成自己的秘钥对,然后将公钥保存到远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回去。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。(摘至阮一峰ssh原理与应用)

实现过程

生成秘钥对

  • 已有自己的秘钥对

很多开发人员在本地都已经有自己的秘钥对了。所以不需要再重新生成一对秘钥。、

使用PuTTYPuTTYgen工具将你已有的私钥转为ppk格式的文件。

加载你已有的私钥(id_rsa)。选择的使用所有类型的文件。打开之后可以看到你的秘钥信息。然后点击save private key保存你的私钥。按照ppk格式保存

  • 使用puttygen创建一个秘钥对

直接使用puttygen这个工具帮我们创建一个秘钥对(我不知道为什么那么慢)

puttygen

将公钥复制下来保存到文本文档或者其他地方(等一下有用) 将私钥保存为ppk的格式。等一下有用

配置服务器

先使用密码登录你的Linux服务器。然后配置/etc/ssh/sshd_config文件。

1
vi /etc/ssh/sshd_config

配置成如下

1
2
3
4
RSAAuthentication yes
PubkeyAuthentication yes
# root用户也可以通过ssh登录
PermitRootLogin yes

这三项一般都是配置正确的。你看一下是否和我的一样就可以了

将公钥配置到authorized_keys

1
2
3
4
5
6
7
# 编辑用户目录下面的文件
vi ~/.ssh/authorized_keys
# 然后将你的公钥复制进去
# 如果里面已经有其他的公钥,就回车一行添加你的公钥
# 如果你没有这个目录和文件。执行如下
# ssh-keygen -t rsa
# 然后狂按回车。中途你想设置密码就不要狂按回车。慢慢按回车

重新ssh服务

1
service sshd restart

putty私钥登录

点击open。然后看看你是否直接就进去了

参考文章