服务器配置ssh密钥免登录
一、简介
二、实操
三、问题
一、简介
当服务器登录使用账号密码比较麻烦时,就可以使用密钥ssh。
二、实操
1.生成公密钥。
1.1 windows 生成
命令行输入
ssh-keygen
1、输入命令后第一行是输入密钥保存地址, 不输入就是默认文件地址
2、 输入密钥的密码,输入时是看不见的
3、确认密码,重复输入,回车就完成了
这个就是生成的公钥和密钥
1.2 linux 生成
同样的命令,同样的操作
ssh-keygen
1. 输入文件保存地址,可以不输入,就存在默认地址
2. 输入密码
3.确认密码
已经生成了
1.3 软件生成。
安装xshell: 去下载
点击生成
下一步
下一步
输入密码后就完成了。
2. 云服务器准备
2.1 提起公钥
在上面步骤中我们生成了密钥对,现在我们要拿到密钥的公钥的信息。
2.1.1 windows
找到生成的公钥,后缀为.pub的文件。读取里面的信息并复制。
2.1.2 linux
与windows 类似
2.1.3 xshell
打开用户密钥,点击需要提起的密钥属性,然后点击公钥,注意,有些部分不复制进去, 到最后两个 == 就结束了。
2.2 服务端端口开放。
2.2.1 云服务端口。
如果是使用的腾讯云,阿里云之类的云服务器,要在安全组里,开放对应端口,默认是22, 你也可以自己设置个端口。
2.2.2 服务端防火墙
查看防火墙状态
systemctl status firewalld
这个是防火墙未开启
这个是开启
systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
如果需要配置端口,自行查阅,这里就不详解了。
2.3 服务端配置ssh公钥。
2.3.1 创建认证文件
vim ~/.ssh/authorized_keys
将提取的公钥粘贴进去
2.3.2 编辑配置文件
vim /etc/ssh/sshd_config
如果需要配置端口可以在这里设置,不设置默认22端口
找到下面选项,并修改好
RSAAuthentication yes #开启RSA验证
PubkeyAuthentication yes #使用公钥验证
AuthorizedKeysFile .ssh/authorized_keys #公钥保存位置
然后保存修改。
2.3.3 重启ssh 服务
systemctl restart sshd
2.4 尝试连接。
2.4.1 新建ssh连接
配置名称,自定义
主机填服务端ip 地址
端口,默认22, 或者你在ssh. 配置文件设置的端口
2.4.2 设置密钥
填写你的远程用户名,密码可以空, 点击用户验证,然后选择Public Key, 然后点设置
选择你的密钥文件,或者自己设置的密钥,然后输入密钥,点击确定。
最后点击连接。
第一次连接会报保存证书。
然后就连接成功了。
三、问题
1. 如果遇到说没有配置公钥的,请确认密钥文件的路径对不对。确认端口是否开放。
2. 当出现以下错误事,在服务端日志可以看到:
Authentication refused: bad ownership or modes for directory /root
导致私钥无法连接ssh端
使用下面命令可以解决
chmod 0750 /root -R chown root.root root
查看 chmod chown 的区别可以看着: 去看看
一个改文件权限, 一个是改用户组,