前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在 CentOS 8 上设置 SSH 密钥

如何在 CentOS 8 上设置 SSH 密钥

作者头像
雪梦科技
发布2020-05-11 14:26:36
2.8K0
发布2020-05-11 14:26:36
举报
文章被收录于专栏:ITCoderITCoder

安全 Shell (SSH) 是一个被设计用来在客户端和服务器之间进行安全连接的加密网络协议。

最流行的两个 SSH 授权方式是基于密码的验证,和 基于公钥的验证。 使用 SSH 密钥通常比传统的密码验证更安全,更便捷。

本文描述如何在 CentOS 8 上生成 SSH 密钥。我们将向你展示如何设置 SSH 密钥并且 不使用密码连接到远程服务器。

一、在 CentOS 上创建 SSH 密钥

在你的 CentOS 客户机上很可能你已经有一个 SSH密钥对了。如果你正在生成一个新的密钥对,旧的密钥对将会被覆盖。

运行下面的ls 命令检查密钥文件是否存在:

代码语言:javascript
复制
ls -l ~/.ssh/id_*.pub

如果命令行输出类似:No such file or directory,或者no matches found,这意味着用户没有 SSH 密钥对,并且你可以进行下一步去生成 SSH 密钥对。

否则,如果你拥有一个 SSH 密钥对,你可以直接使用它们,或者备份旧的密钥,并且生成新的密钥对。

使用你的邮件地址作为评论生成一个4096位 SSH 密钥对,输入下面的命令:

代码语言:javascript
复制
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

你将会被提示指定文件名:

代码语言:javascript
复制
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):

输入Enter接受默认的文件位置和文件名。

下一步,你会被询问输入一个安全密码。不管你是否需要设置这个安全密码,这完全由你自己决定。 一个安全密码将会更加安全。如果你不想要安全密码,输入:

代码语言:javascript
复制
Enter passphrase (empty for no passphrase):

整个交互过程看起来像这样:

想要验证你的新的 SSH 密钥是否生成,输入:

代码语言:javascript
复制
ls ~/.ssh/id_*

输出:

代码语言:javascript
复制
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub

二、拷贝公钥到服务器

现在 SSH 密钥已经生成,下一步就是拷贝公钥到你想要管理的服务器。

将公钥拷贝到远程服务器最简单并且最推荐的方式,就是使用ssh-copy-id工具。在你的本地机器终端中输入:

代码语言:javascript
复制
ssh-copy-id remote_username@server_ip_address

这个命令将会要求你输入remote_username密码:

代码语言:javascript
复制
remote_username@server_ip_address's password:

一旦用户被授权,公钥文件(~/.ssh/id_rsa.pub)将会被附加到远程用户~/.ssh/authorized_keys文件,并且连接将会被关闭。

代码语言:javascript
复制
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.

如果ssh-copy-id在你的本地电脑上不可用,使用下面的命令拷贝公钥:

代码语言:javascript
复制
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

三、使用 SSH 密钥登录你的服务器

在完成上面的步骤之后,你应该可以直接登录远程服务器,不用输入密码。

想要验证它,尝试通过 SSH 登录你的服务器:

代码语言:javascript
复制
ssh remote_username@server_ip_address

如果你没有为私钥设置密码,你将能够很快登录服务器。否则,你将被要求输入密码。

四、禁用密码验证

想要让远程服务器更安全,你可以禁用 SSH 密码验证。

在继续之前,确保你可以不使用密码,以 sudo 权限用户登录你的服务器。

按照下面的步骤来禁用 SSH 密码验证:

01.登录你的远程服务器:

代码语言:javascript
复制
ssh sudo_user@server_ip_address

02.使用你的文本编辑器打开 SSH 配置文件etc/ssh/sshd_config

代码语言:javascript
复制
sudo nano /etc/ssh/sshd_config

03.搜索下面的指令,并且修改如下:

代码语言:javascript
复制
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

04.一旦完成,保存文件,并且重启 SSH 服务器,输入:

代码语言:javascript
复制
sudo systemctl restart ssh

此时,基于密码的验证被禁用。

五、总结

我们向你展示如何生成一个新的 SSH 密钥对并且设置基于 SSH 的验证。你可以使用同一个密钥去管理多个远程服务器。你已经学习到如何禁用密码验证并且增强你的服务器安全性。

默认情况下,SSH 监听端口 22。修改这个默认的 SSH 端口可以降低被自动攻击的风险。想简化你的工作流程,使用 SSH 配置文件来定义所有的 SSH 连接。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年04月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、在 CentOS 上创建 SSH 密钥
  • 二、拷贝公钥到服务器
  • 三、使用 SSH 密钥登录你的服务器
  • 四、禁用密码验证
  • 五、总结
相关产品与服务
主机安全
主机安全(Cloud Workload Protection,CWP)基于腾讯安全积累的海量威胁数据,利用机器学习为用户提供资产管理、木马文件查杀、黑客入侵防御、漏洞风险预警及安全基线等安全防护服务,帮助企业构建服务器安全防护体系。现支持用户非腾讯云服务器统一进行安全防护,轻松共享腾讯云端安全情报,让私有数据中心拥有云上同等级别的安全体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档