如何在Linux系统中生成公钥? (linux 生成 public key)

在Linux系统中,生成公钥是一项重要的任务,因为它可以帮助我们更好地保护我们的电子邮件、网站和其他在线活动。公钥是一种加密机制,我们使用它来验证我们的身份,并确保我们的通信是安全的。本文将向您展示如何在Linux系统中生成公钥。

生成SSH密钥对

在本文中,我们将展示如何在Linux系统中生成SSH密钥对。SSH密钥对通常由两个部分组成:私钥和公钥。私钥需要妥善保管,而公钥可以被分享给其他用户。当其他用户向我们发送加密信息时,我们使用私钥解密它。当我们向其他用户发送加密信息时,我们使用他们的公钥加密它。以下是在Linux系统中生成SSH密钥对的步骤:

之一步:打开终端

我们需要打开终端,然后输入以下命令:

ssh-keygen -t rsa

这将启动一项名为“ssh-keygen”的程序。这个程序可以帮助我们生成SSH密钥对。

第二步:设置密钥的名称和位置

接下来,我们将需要设置密钥的名称和位置。您可以使用默认的选项,或者选择您自己的位置和名称。

第三步:输入密码

如果您想保护您的私钥,您可以为其设置密码。这可以帮助确保只有您可以访问您的私钥。

第四步:公钥已经生成

生成的公钥现在可以在您选择的位置中找到。默认情况下,它将位于您的主目录下的“~/.ssh”文件夹中。

将公钥添加到远程主机

现在我们已经生成了我们的公钥,我们需要将其添加到远程主机上,以便我们可以将其用于身份验证。以下是如何将公钥添加到远程主机的步骤:

之一步:连接到远程主机

我们需要使用ssh连接到远程主机,输入以下命令:

ssh username@remote_host

第二步:收集远程主机的公钥

我们将需要从远程主机收集其公钥。这可以在终端中完成,输入以下命令:

ssh-keyscan -t rsa remote_host >> ~/.ssh/known_hosts

第三步:将公钥添加到远程主机上

现在我们需要将我们的公钥添加到远程主机上。我们可以使用ssh-copy-id命令来完成这个任务。输入以下命令:

ssh-copy-id username@remote_host

此命令将公钥复制到远程主机上。

现在我们已经生成了公钥,并将其添加到我们要连接的远程主机上。我们可以使用它来进行身份验证,并确保我们的通信是安全的。

本文向您展示了如何在Linux系统中生成公钥,并将其添加到远程主机上。这是非常必要的,因为它可以帮助我们更好地保护我们的在线活动。如果您在这个过程中遇到任何问题,您可以查看Linux文档,或在相关的Linux社区寻求帮助。祝您好运!

相关问题拓展阅读:

  • 【Linux】SSH 使用密码/公钥远程登录总结
  • 如何生成SSH key

【Linux】SSH 使用密码/公钥远程登录总结

本文是笔者查阅网上资料做的总结,关于SSH原理,什么是对称加密和

非对称加密

,本文不过多介绍。这里介绍一下SHH的工作过程、配制方法,可能出现的问题及解决方法。

说明:本文中涉及的例子,SSH客户端为:

本地主机

A,SSH服务器洞激为:服务器B

SSH协议采用C-S(客户端-服务器端)架构进行双方的身份验证以及数据的加密。

服务器端组件监听指定的端口,负责安全连接的建立、对连接方的身份认证、以及为通过身份认证的用户建立正确的环境。

客户端负责发起最初的TCP握手、安全连接的建立、验证服务器的身份与之前记录中的一致、并将自己的验证信息提供给服务器。

一个SSH会话的建立过程分为两个阶段。之一阶段,双方沟通并同意建立一个加密连接通道以供后续信息传输用。第二阶段,对请求接入的用户进行身份验证以确定服务器端是否要给该用户开放访问权限。

当客户端发起TCP连接时,服务器端返回信息说明自己支持的协议版本,如果客户端上支持的协议与之匹配,则连接继续。服务器会提供自己的公共主机密钥(public host key)以让客户端确认自己访问的是正确的机器。

然后,双方采用一种Diffie-Hellman算法共同为该会话建立密钥。每一方的一部分私有数据,加上来自对方的一部分公共数据,通过这种算法计算,能够得出完全相同的密钥用于本次会话。

整个会话的通讯内容都使用该密钥进行加密。这个阶段使用的

公钥

/私钥对与用户验证身份用的SSH密钥是完全无关的。

经典Diffie-Hellman算法的计算步骤如下:

这个共享密钥的加密方式被称为

二进制

数据包协议(binary packet protocol)。该过程能够让双方平等的参与密钥生成的过程,而不是由单方掌握。这种共享密钥生成的过程是安全的,双方没有交换过任何未经加密的信息。

生成的密钥是对称式密钥,一方用于加密信息的密钥等同于另一方用于解密信息的密钥,而任何第三方由于不持有该密钥,是无法解密双方传递的内容的。

会话加密通道建立后,SSH开始进入用户认证阶段。

下一步,服务器验证用户身份以决定是否准许其访问。验证有不同的方式,选择的验证方式取决于服务器的支持。

最简单的验证是密码验证:服务器要求客户端输入密码,客户端输入的密码经过上述的通道加密传输给服务器。

虽然密码是加密过的,然而该方法仍然不被推荐,因为用户经常为了省事而使用过于简单的密码,而这类密码很容易就能够慧改被自动化脚本破解。

更流行的验证方式是SSH密钥对,这也是当前最推荐的方式。SSH密钥对是非对称密钥,私钥和公钥分别用于不同的功能。

公钥用于加密,而私钥用于解密。公钥可以随意上传、共享,因为公钥的流通并不会危及到私钥的保密性。

SSH密钥对的验证过程起始于上一部分加密通道建立之后,其具体执行步骤如下:

简单来说,服务器纳碧袜端用公钥加密信息,客户端用私钥解密信息以证明自己持有私钥。该过程同时使用了对称加密和非对称加密,两种方式各有自己的功用。

命令如下:

用户名

:为要登录的服务器B中已存在的用户账户名

IP地址

:为服务器B的IP地址

-p

端口号

:用来指定端口号,默认为22

之一次登录时,会提示如下提示:

大概意思是说,你正在访问的主机不能验证它的真实性,它的RSA key(当前访问主机的公钥)指纹是怎样的,你确定要继续连接吗?

输入yes继续,会提示,已永久把当前访问主机的RSA key添加到了已知主机文件(用户目录下,.ssh

文件夹

中的knwon_hosts文件)中。之后再次 SSH 登录就不再有该提示了。

接着,输入登录账户的密码即可。

SSH 密码登录,需要服务器开启密码验证权限,编辑服务器SSH配置命令如下:

在 sshd_config 文件中,Protocol 2 下面 #PasswordAuthentication yes,将前面的#号去掉,保存退出。

公钥登录,即免密码登录。避免的每次登录都要输入的麻烦,也防止了

中间人攻击

。是SSH远程登录最常用的登录方式。

提示输入密钥对名称,直接回车,使用默认名称即可;

提示输入密码(使用私钥时,要输入密码),直接回车,不使用密码即可。

首先,登录服务器B,在进行下面的操作。

找到 #PubkeyAuthentication yes,删除 #号,保存退出。

重启 ssh 服务

也可指定验证私钥:

本地主机A,生成密钥对后:

sudo vim /etc/selinux/config

如何生成SSH key

一:生成KEY

在终端中输入:ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key重新建立ssh_host_dsa_key文件

以下是返回信息

Generating public/private dsa key pair.

Enter passphrase (empty for no passphrase):(直接回车)

Enter same passphrase again:

Your identification has been saved in /etc/ssh/ssh_host_dsa_key.

Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.

The key fingerprint is:

xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

在终端中输入:ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key重新建立ssh_host_rsa_key文件

以下是返神闭回陪迅信息

Generating public/private rkey pair.

Enter passphrase (empty for no passphrase):(直接回车)

Enter same passphrase again:

Your identification has been saved in /etc/ssh/ssh_host_rsa_key.

Your public key has been saved in /etc/ssh/ssh_host_dsa_rey.pub.

key生成在目录/etc/ssh

没有.ssh目录的话手动创建,注意,它的目录权限是700

cat ssh_host_dsa_key.pub >> /root/.ssh/authorized_keys

ssh_host_dsa_rey这个放到客户游乱裂端

/etc/ssh/sshd_config配置如下

Port 22

PubkeyAuthentication yes

AuthorizedKeysFile /root/.ssh/authorized_keys

PasswordAuthentication no /*禁止密码验证登录

  1. 检查SSH keys是否存在

  输入下面的命令,如果有文件id_rsa.pub 或 id_dsa.pub,则直接进入步骤3将SSH key添加到GitHub中,否则进入第二步生成SSH key

  ls -al ~/.ssh

  # Lists the files in your .ssh directory, if they exist

  2. 生成新的ssh key

  之一步:生成public/private rsa key pair

  在命令行中输入ssh-keygen -t rsa -C “”

  默认会在相应路径下(/your_home_path)生成id_rsa和id_rsa.pub两个文件,如下面代码所示

  ssh-keygen -t rsa -C “”

  # Creates a new ssh key using the provided email

  Generating public/private rsa key pair.

  Enter file in which to save the key (/your_home_path/.ssh/id_rsa):

  第二步:输入passphrase(本步骤可以跳过)

  设置passphrase后,进行版本控制时,每次与GitHub通信都会要求输入passphrase,以避免某些“失误”

  Enter passphrase (empty for no passphrase):

  Enter same passphrase again:

  sample result:

  Your identification has been saved in /your_home_path/.ssh/id_rsa.

  Your public key has been saved in /your_home_path/.ssh/id_rsa.pub.

  The key fingerprint is:

  #01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db

  第三步:将新生旦尘镇成的key添加到ssh-agent中:

  # start the ssh-agent in the background

  eval “$(ssh-agent -s)”

  Agent pid 59566

  ssh-add ~/.ssh/id_rsa

  3. 将ssh key添加到GitHub中兄旦

  用自己喜欢的文本编辑器打开id_rsa.pub文件,里面的信息即为SSH key,将这些信息复制到GitHub的Add SSH key页面即可

  不同的操作系统,均有一些命令,直接将SSH key从文件拷贝到粘贴板中,如下模粗:

  mac

  pbcopy

  # Copies the contents of the id_rsa.pub file to your clipboard

  windows

  clip

  # Copies the contents of the id_rsa.pub file to your clipboard

  linux

  sudo apt-get install xclip

  # Downloads and installs xclip. If you don’t have `apt-get`, you might need to use another installer (like `yum`)

  xclip -sel clip

linux 生成 public key的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux 生成 public key,如何在Linux系统中生成公钥?,【Linux】SSH 使用密码/公钥远程登录总结,如何生成SSH key的信息别忘了在本站进行查找喔。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《如何在Linux系统中生成公钥? (linux 生成 public key)》
文章链接:https://zhuji.vsping.com/22625.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。