生成密钥
使用ssh-keygen生成密钥
直接回车默认即可,你要设置密码也行到时候连接的时候就需要密钥+你设置的密钥才能连接。也可以修改密钥类型和位数等,自行搜索ssh-keygen语法类型了解。
生成的密钥默认在/root/.ssh目录下,id_rsa(私钥)id_rsa.pub(公钥)
将公钥id_rsa.pub复制或上传到你需要被连接的服务器,私钥id_rsa自己保留用来连接。
这里我不需要复制到其它服务器,就用当前云服务器操作(生产密钥任何服务器都行,不需要说哪台服务器需要用到就用哪台服务器去生成,包括现在很多客户端软件都支持一键生成密钥。)
将公钥写入authorized_keys文件,统一是在ssh目录下
使用私钥登录
将私钥id_rsa下载到我们电脑上
我这里是MAC使用的Termius工具连接,设置你的服务器地址,ssh端口和用户名、上传我们的私钥或者复制私钥里面的内容复制出来粘贴。
各类客户端连接大同小异
保存连接测试,OK直接连进来了不需要输入密码
禁用密码和root账户登录
上面使用密钥可以正常登录了,但是现在也可以直接用账号密码登录服务器
禁用密码登录需要修改/etc/ssh/sshd_config 配置文件
找到PasswordAuthentication参数把yes改成no,即禁止使用密码登录服务器。
重启ssh服务
原来使用密码的方式就登录不了服务器了
还有一个参数可以设置,那就是PermitRootLogin,此设置只针对root用户
将参数设置成prohibit-password,可以使用密钥登录命令权限也还在,
参数 | ssh登录 | 登录方式 | shell |
---|---|---|---|
yes | 允许 | 没有限制 | 没有限制 |
prohibit-password/without-password(已弃用,但也能生效) | 允许 | 除密码以外 | 没有限制 |
forced-commands-only | 允许 | 密钥 | 仅允许已授权的命令 |
no | 拒绝 |
PasswordAuthentication和PermitRootLogin区别
PasswordAuthentications:如果为no,则必须使用其他的身份验证方式,如公钥身份验证。
PermitRootLogin: 设置为 no 表示 不允许 root 用户远程访问。设置为 yes 表示允许 root 用户远程访问。设置为 prohibit-password 表示 不允许 root用户使用密码远程访问,但是可以用其他方式访问,比如密钥。
评论区
Preview: