ssh密钥登陆(免密登陆)
- ssh:客户端 sshd:服务端
一、制作密钥对
- 登陆需要远程的主机,然后输入ssh-keygen开始制作密钥对(需要使用哪个用户登陆就用对应的用户进行制作)
ssh-keygen
-
过一会会出现密钥对保存的路径以及密钥锁码配置
-
可以直接使用默认路径,也可手动输入路径,然后回车即可
-
密钥锁码可留空,如果设置了,请牢记,因为使用私钥的时候需要输入,接着
按回车键继续即可 -
会提示再次输入密钥锁码,输入后再按回车键即可(留空的话直接回车即可)
-
接着会出现提示信息,还有密钥对保存的路径
-
密钥对制作完成
二、在远程主机上安装公钥
- 键入以下命令,在远程主机上安装公钥
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
- PS:文件权限一定要设置对,.ssh 权限必须为700,authorized_keys权限必须为644或600
cd ~
sudo chmod 700 .ssh
sudo chmod 644 .ssh/authorized_keys
- 权限不对无法通过密钥对进行登陆,这是Linux的安全要求
三、修改ssh配置文件,打开密钥登陆功能
Debian/Ubuntu
- 进入/etc/ssh/sshd_config.d 并新建密钥登陆配置文件
cd /etc/ssh/sshd_config.d
sudo touch rsa.config
- 修改新建的rsa.config文件,配置如下
RSAAuthentication yes
PubkeyAuthentication yes
- 重启ssh服务
sudo systemctl restart sshd
CentOS
- 进入/etc/ssh/并修改配置文件sshd_config
cd /etc/ssh
sudo nvim sshd_config
- 配置如下
RSAAuthentication yes
PubkeyAuthentication yes
- 可能还需要一个配置,如下(一般默认配置已经配好,如果没有,并且不能免密登陆,请加入该配置)
AuthorizedKeysFile .ssh/authorized_keys
- 重启ssh服务
sudo systemctl restart sshd
四、客户端配置密钥登陆
- 将私钥下载到客户端
scp username@ip:/home/username/.ssh/id_rsa .
- 修改客户端的ssh配置文件,没有则新建
cd ~/.ssh
nvim config
- 配置示例如下
Host pi # ssh使用的名称,可自定义,方便记忆
User pi # 远程主机用户名
ServerAliveInterval 60 # 每60秒发送一个KeepAlive请求,保证终端不会因为超时空闲而断开连接
HostName pi.mi # 远程主机域名/IP
Port 22 # 远程主机ssh服务端口
IdentityFile ~/.ssh/pi_id_rsa # 远程主机对应的私钥文件路径(绝对路径,否则在其它目录下登陆会找不到文件)
- ssh连接远程主机
ssh pi
五、关闭密码登陆功能(可选)--- 一定先测试,密钥能正常登陆后再关闭密码登陆
- 配置/etc/ssh/sshd_config,配置如下
PasswordAuthentication no
- 重启ssh服务
sudo systemctl restart sshd