掌握技巧:Linux下RSA密钥生成详解 (linux rsa密钥生成)

RSA加密算法是一种非对称加密算法,其安全性强大,被广泛应用于信息加密、数字签名等领域。在Linux操作系统下,可以使用OpenSSL工具生成RSA密钥。本文将详细介绍在Linux下生成RSA密钥的步骤及相关技巧。

1. 安装OpenSSL

在Linux系统中,OpenSSL通常已经默认安装。可以通过以下命令检查OpenSSL是否已经安装:

“`shell

openssl version

“`

如果没有安装,则需要通过包管理器安装OpenSSL。常见的包管理器有apt、yum等,可以根据自己的Linux发行版和版本来选择具体的包管理器。

2. 生成RSA密钥

在Linux系统下,可以使用以下命令生成RSA密钥:

“`shell

openssl genrsa -out private_key.pem 2023

“`

其中,genrsa表示生成RSA密钥,-out指定生成的密钥文件名,2023表示密钥长度为2023位。一般情况下,2023位的密钥已经足够安全,如果需要更高的安全性,可以使用4096位或更长的密钥。

生成的密钥文件包括私钥和公钥两部分。私钥存储在private_key.pem文件中,可以使用以下命令查看私钥内容:

“`shell

cat private_key.pem

“`

公钥可以从私钥中导出。使用以下命令从私钥中导出公钥:

“`shell

openssl rsa -in private_key.pem -pubout -out public_key.pem

“`

其中,rsa表示对RSA密钥进行操作,-in指定输入的密钥文件,-pubout指定生成的是公钥,-out指定输出的公钥文件名。

3. 使用RSA密钥加密/解密数据

在Linux系统中,可以使用OpenSSL工具进行RSA加密/解密操作。以下是加密和解密的命令格式:

“`shell

openssl rsautl -encrypt -in plntext.txt -inkey public_key.pem -pubin -out ciphertext.txt

openssl rsautl -decrypt -in ciphertext.txt -inkey private_key.pem -out plntext.txt

“`

其中,rsautl表示对RSA加密解密进行操作,-encrypt表示加密操作,-in指定需要加密的数据文件名,-inkey指定用于加密的密钥文件,-pubin表示输入的密钥文件是公钥,-out指定加密后输出的数据文件名。解密的参数与加密的参数相似,只是将-encrypt换成了-decrypt。

4. 小结

通过安装和使用OpenSSL工具,生成和使用RSA密钥变得十分容易。在实际使用中,需要注意以下几点:

(1)为了保证密钥的安全性,应该定期更换密钥;

(2)为了保证 RSA 加密/解密的速度,密钥长度应该选择适当的长度;

(3)在进行 RSA 加密/解密操作时,操作系统的性能也会影响速度,因此需要考虑选择性能更好的服务器。

希望本文能够帮助读者更好地掌握在Linux下生成RSA密钥的技巧,从而加强信息安全保护。

相关问题拓展阅读:

linux下怎样设置ssh无密码登录

用SSL加密Key实现自动登录

需要材料:

1 被管理的SSH服务器一台。

2 管理端电脑一台。

环境:

管理服务器: ip:192.168.0.1 机器名:server

被管理服务器:ip:192.168.0.2 机器名:client

生成密钥对:

生成公钥密钥对是在管理服务器上生成的:

# ssh-keygen -bt rsa

Generating public/private rsa key pair. #提示正在生成rsa密钥对

Enter file in which to save the key (/home/usrname/.ssh/id_dsa): #询问公钥和私钥存放的位置,回车用默认位置即可

Enter passphrase (empty for no passphrase): #询问输入私钥密语,输入密语

Enter same passphrase again: #再次提示输入密语确认

Your identification has been saved in /home/usrname/.ssh/id_dsa. #提示公钥和私钥已经存放在/root/.ssh/目录下

Your public key has been saved in /home/usrname/.ssh/id_dsa.pub.

The key fingerprint is:

x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 root@server #提贺迹示key的指纹

拷贝你的公钥到被管理的服务器上

在你的管理服务器上把你的公钥拷贝到被管理服务器上要进行自动登陆的用户目录下。

# scp .ssh/id_dsa.pub : #比如你想使用用户peter登陆,则remote_usrname请以peter代替

改名和进行禅巧并权限设置

登陆被管理的服务器,进入需要远程登陆的用户目录,把公钥放到用户目录的 .ssh 这个目录下(如果目录不存在,需要创建~/.ssh目录,并把目录权限设置为700),把公钥改名为authorized_keys2,并且把它的用户权限设成600。

$ ls

id_rsa.pub

$ mkdir ~/.ssh #如果当前用户目录下没有 .ssh 目录,请先创建目录

$ chmod 700 ~/.ssh

$ mv id_rsa.pub ~/.ssh

$ cd ~/.ssh

$ cat id_rsa.pub >> authorized_keys2

$ rm -f id_rsa.pub

$ chmod 600 authorized_keys2

$ ls -l

total 4

-rwpeter peter 225 Oct 10 11:28 authorized_keys2

测试使用密钥对进行远程登陆

# ssh

Enter passphrase for key ‘/root/.ssh/id_rsa’: #提示输入密码短语,请输入刚才设置的密码短语

Last login: Sun Oct 10 11:32:from 192.168.0.1

$

如果你不能用正确的登录,应该重宽扒新检查一下你的authorized_keys2的权限。也可能要检查.ssh目录的权限。

使用 ssh-agent(ssh代理)自动输入密码短语

牢记你的“密码短句”,现在你可以用你的密钥而不是密码来登录你的服务器了,但是这样仍然没有省什么事,你还是要输入密钥的“密码短语”。有更简便的方法吗?答案就是采用SSH代理(ssh-agent),一个用来帮你记住“密码短语”的程序。 ssh-agent是OpenSSH中默认包括的ssh代理程序。

登陆管理服务器

# ssh-agent

SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;

SSH_AGENT_PID=2148; export SSH_AGENT_PID;

echo Agent pid 2148;

当你运行ssh-agent,它会打印出来它使用的 ssh 的环境和变量。要使用这些变量,有两种方法,一种是手动进行声明环境变量,另一种是运行eval命令自动声明环境变量。

方法一:手动声明环境变量

# SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;

# SSH_AGENT_PID=2148; export SSH_AGENT_PID;

# printenv | grep SSH #检查 ssh 环境变量是否已经加入当前会话的环境变量

SSH_AGENT_PID=2148

SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147

方法二:运行eval命令自动声明环境变量

# eval `ssh-agent`

Agent pid 2157

# printenv | grep SSH #检查 ssh 环境变量是否已经加入当前会话的环境变量

SSH_AGENT_PID=2148

SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147

现在 ssh-agent 已经在运行了,但是 ssh-agent 里面是空白的不会有解密的专用密钥。我们要告诉它我们有私钥和这个私钥在哪儿。这就需要使用 ssh-add 命令把我们的专用密钥添加到 ssh-agent 的高速缓存中。

# ssh-add ~/.ssh/id_dsa

Enter passphrase for /home/user/.ssh/id_dsa: #输入你的密码短语

Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)

# ssh-add -l #查看 ssh代理的缓存内容

:78:5e:6b:16:fd:f2:8c:81:b1:18:e6:9f:77:6e:be /root/.ssh/id_rsa (RSA)

如何生成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

ssh-key关于authorized_keys电脑与linux互相认证

概念:authorized_keys文件中存储着本地系统可以允许远端计算机系统ssh免密码登陆的账号信息。也就是远端的计算机可以通过什么账号及地址不需要输入密码既可以远程登陆本系统。

一、配置完本地ssh-key后,配置本地或者vscode保持长时间连接银哗远程linux服务器,避免每次都密码登录(突然造成远程服务逗察端口占用问题,耽误我好久时间,只因为少执行了(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)):

例如:

PC =(ssh)> (9.135.164.160)

9.135.164.160) =(ssh)> git

二、具体操作流程

单向登陆的操作过程(能满足上边的目的):

1、登录A机器

2、ssh-keygen -t ,将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys

4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60 )

双向登陆的操作过程:

1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:

2、两个节点都执行操作:#ssh-keygen -t rsa

然后全部回车,采用默认值.

3、这样生成了一对密钥,存放在用户目录的~/.ssh下。

将公钥考到对山搏茄方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。

4、设置文件和目录权限:

设置authorized_keys权限

chmod 700 -R .ssh

关于linux rsa密钥生成的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 掌握技巧:Linux下RSA密钥生成详解 (linux rsa密钥生成)