设备:MacBook Pro、多台Centos7.4服务器(已开启sshd服务)
大体流程:本机生成秘钥,将秘钥上传至服务器即可实现免密登录
1、本地电脑生成秘钥:
ssh-keygen -t rsa -C "邮箱地址 例:*****.@163.com"
一路回车即可,所有都默认就可以生成秘钥,引号内是唯一邮箱,可以作为以后Git远程仓库使用。结果如下图。
生成之后,查看生成后的公钥和私钥:
ls ~/.ssh
可以看到有两个文件:id_rsa(私钥)、id_rsa.pub(公钥)
2、登录远程服务器:
查看 ~ 目录下是否有 .ssh 目录,~目录 指的是当前用户的主目录名 (/home/用户名)
ls -al ~
如果没有 .ssh 可以创建该目录
mkdir -p ~/.ssh
或者 可以执行下面的命令 按照提示输入yes 再输入密码即可,.ssh 目录是用来存储 本台机器ssh访问其他服务器信息的,没有访问其他机器是没有.ssh 目录的
ssh localhost
3、将本机生成的公钥放到服务器的 ~/.ssh 目录下:
在本地 使用 scp 命令 : scp 需要发送的文件路径 目标路径
将本地生成的公钥 放到服务器用户主目录下的.ssh目录里 并命名为 authorized_keys
scp ~/.ssh/id_rsa.pub root@服务器ip地址:/用户主目录名/.ssh/authorized_keys
这样就完成了 再次登录服务器就不需要输入密码了。
4、设置禁止密码登录:
修改ssh的配置文件
sudo vim /etc/ssh/sshd_config
修改内容如下 按需选择配置即可
# 禁止密码登录。原先为PasswordAuthentication yes
PasswordAuthentication no
# 禁止 root 登录,看情况是否需要。原先为PermitRootLogin yes
PermitRootLogin no
然后重启ssh服务
service restart sshd.service