基本原理:
就是本地服务器想要连接远程服务器免密登录,需要把本地服务器的id_rsa.pub文件内容写进远程服务器的authorized_keys里面。
image.png
基本操作流程:
- 生成公钥以及密钥:
id_rsa就是私钥,id_rsa.pub文件就是公钥文件,使用命令ssh-kengen可以生成私钥/公钥对。
私钥/公钥对的生成算法有两种RSA和DSA。
RSA是非对称加密算法,可以用来加密和签名
DSA(Digital Signature Algorithm)只可以用来数字签名的算法
使用ssh-keygen -t rsa命令,表示使用RSA生成私钥/公钥对,然后一路回车。
若是不想回车,可使用如下命令一键式生成
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa.
- 上传公钥到对应的服务器
方法一 :
- 将本地服务器生成的公钥拷贝到远程服务器上
scp -p id_rsa.pub 用户名@远程服务器ip:~/.ssh/id_rsa.pub1
然后,在远程服务器上:
cat id_rsa.pub1 > authorized_key
验证查看文件authorized_key中是否有id_rsa.pub1文件的内容
方法二:
- 使用命令ssh-copy-id可以将认证文件加载到对应的服务器上:
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@远程服务器ip
常见问题定位
系统日志:/var/log/secure。ssh连接失败的报错,在这里记录。
- 目录权限的问题
1008726dc734d5aad50d_2226x570.png@900-0-90-f.png
解决:相关目录权限不对,按照前面的叙述修改目录权限
2)sshd_config文件配置错误。
sudo vi /etc/ssh/sshd_config
找到
#StrictModes yes
改成
StrictModes no
重启sshd服务
systemctl restart sshd