
正文
linux生成公钥的命令 linux如何生成公钥
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
10.ssh公钥在哪
SSH(Secure Shell)是一套协议标准linux生成公钥的命令,可以用来实现两台机器之间linux生成公钥的命令的安全登录以及安全linux生成公钥的命令的数据传送linux生成公钥的命令,其保证数据安全的原理是非对称加密。
SSH还常用来远程登录到别的机器,
有两种常用的方法, 账号密码登录 和 利用公钥登录
公钥linux生成公钥的命令:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密
私钥: 用来解密公钥加密的数据。
ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对。
一般采用的ssh的rsa密钥:
下述命令产生不同类型的密钥
Windows10下.ssh目录的路径在用户命令下的.ssh文件下
相关问答
Q1: linux之ssh命令详解
ssh是什么呢? 👉百科上是这么说的
简单来说linux生成公钥的命令,在linux中SSH是非常常用的工具linux生成公钥的命令,通过SSH客户端linux生成公钥的命令我们可以连接到运行了SSH服务器的远程机器上,也就是说,我们可以通过ssh来远程控制我们的电脑或者服务器。那么ssh协议的优点就是数据传输是加密的,可以防止信息泄露,而且数据传输是压缩的,可以提高传输速度。
它的命令格式是👉 ssh [-p port] user@remote
user 是在远程机器上的用户名,如果不指定的话默认为当前用户
remote 是远程机器的地址,可以是IP/域名,或者是别名
port 是SSH Server监听的端口,如果不指定,就为默认值22
(使用exit退出当前用户的登录)
有关SSH配置信息都保存在用户家目录下的.ssh目录下
接下来,我们就来实际演示一下ssh命令的使用
首先我们需要两台linux系统的电脑来进行演示,所以我用虚拟机安装了两个linux的系统,分别命名为Deepin1和Deepin2(不得不说deepin真的是即好看又好用😄)
不过deepin操作系统默认ssh是没有开启的,我们需要手动将它开启。
第一步,在终端输入sudo apt-get install ssh安装ssh服务
第二步,在终端中输入sudo service ssh start开启ssh服务
注意linux生成公钥的命令:deepin1和deepin2都要执行上面两步来安装和开启ssh服务
安装并打开ssh之后,我们使用Deepin1来远程连接Deepin2,那么我们需要知道Deepin2的ip地址,在终端中输入ifconfig就可以知道当前机器的ip地址了,或者也可以直接把鼠标放到网络连接上,会直接显示出来。我这里Deepin2的IP地址为:192.168.56.132
然后,我们在Deepin1的终端中输入ssh -p 22 deepin2@192.168.56.132然后回车
这里 -p 22 可以省略,22表示ssh的端口号为22, deepin2 为Deepin2的用户名, 192.168.56.132 为Deepin2的ip地址。
第一次连接,会弹出来是否连接的确认信息,我们输入yes确认,然后输入deepin2的密码并回车。出现如下界面就表示连接成功了。
连接成功后,我们尝试输入 cd Desktop/ 切换到桌面目录,然后输入 touch 123.txt 在桌面下创建123.txt文件
我们再切换到Deepin2系统中,发现桌面上的确出现了一个新的文件123.txt,大功告成linux生成公钥的命令!
到这里ssh的基本操作其实已经演示完了,但是我们发现每次远程登陆的时候都需要重新输入密码,稍微有点麻烦,其实我们可以通过设置,进行免密码登录。
免密登录:
第一步,配置公钥。在Deepin1终端中执行ssh-keygen即可生成SSH钥匙,一路回车即可。
第二步,上传公钥到服务器。在Deepin1终端中执行ssh-copy-id -p port user@remotr(ssh-copy-id -p 22 deepin2@192.168.56.132)可以让远程服务器记住我们。
第三步,设置完成了,试一下是否能免密登录呢?
可以看到,当我们远程登陆deepin2时,并没有输入用户密码就登陆成功了!其实挺简单的不是吗?
Q2: 设置Linux服务器通过密钥登录
首先在服务器上制作密钥对
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。
现在,在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。
键入以下命令,在服务器上安装公钥:
如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
最后,重启 SSH 服务:
将打印出的结果保存成id_rsa文件,供ssh客户端登陆使用
Q3: ssh免密码登陆及其原理
[TOC]
ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面以CentOS为例。有机器A(192.168.64.21),B(192.168.64.22)。
目标:A通过ssh免密码登录到B
特意强调,使用参数可以省去生成公钥/私钥linux生成公钥的命令的回车步骤
备注:
第一次登录需输入yes,现在A机可以无密码登录B机了,B登陆A,也同样,在B中生成公钥和私钥对,将公钥写入authorized_keys中,然后同步A、B中的authorized_keys,使其一致就ok了。
也即就是:登录的机子有私钥,被登录的机子要有登录机子的公钥,这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法(不对称加密算法)的公钥/私钥对,当然也可以用dsa(对称加密算法:对应的文件是id_dsa,id_dsa.pub)
SSH是为建立在应用层和传输层基础上的安全协议( OSI七层与TCP/IP五层网络架构详解 )。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。
从客户端来看,SSH提供两种级别的安全验证:
只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。以下是登录验证流程:
当第一次链接远程主机时,会提示你当前主机的”公钥指纹”,询问你是否继续,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到~/.ssh/known_hosts文件中。
这种验证的前提是客户端需要生成一对密钥,将公钥放到需访问的远程服务器。这种验证比上一种的好处是,不能仿冒真正的服务器,因为要仿冒必须拿到客户端生成的公钥。缺点就是验证等待过程稍长些。
1、在客户端打开终端,执行 ssh-keygen ,该命令会默认在 ~/.ssh/ 目录下创建 id_rsa 、 id_rsa.pub 两个文件,分别为你的公钥和私钥
2、将公钥 id_rsa.pub 文件拷贝到服务器端的 ~/.ssh/authorized_keys 文件中,可通过scp拷贝
A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。非对称加密,公钥加密的密文不能公钥解开,只能私钥解开
ssh-agent
ssh-agent是密钥管理器,是一种控制用来保存公钥身份验证所使用的私钥的程序
运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程
ssh-agent是管理多个ssh key的代理,受管理的私钥通过ssh-add来添加
好处1:不用重复输入密码
用 ssh-add 添加私钥时,如果私钥有密码的话,照例会被要求输入一次密码,在这之后ssh-agent可直接使用该私钥,无需再次密码认证。
好处2:不用到处部署私钥
假设私钥分别可以登录同一内网的主机 A 和主机 B,出于一些原因,不能直接登录 B。可以通过在 A 上部署私钥或者设置 Forwarding(转发) 登录 B,也可以转发认证代理连接在 A 上面使用ssh-agent私钥登录 Blinux生成公钥的命令;可以在A上直接sftp传文件到B上。
如这边有一台机器是local,能通过公钥直接登陆server1和server2。server1和server2之间无公钥登陆。
现在要在server1上直接登陆server2,在local上执行
执行了之后就将私钥给ssh-agent保管了,server1上面登陆server2的时候,需要私钥验证的时候直接找ssh-agent要就可以了
接下来登陆server1,注意-A
可以发现server1上多了/tmp/ssh-xxxxxxxxx/agent.xxxxx的socket,之后神奇的事发生了,在 server1上可直接进server2,只需执行如下命令,如果加了-A则可以继续ssh forwarding(转发) ,以至无限的机器forwarding。
ssh (-A) server2
同样的原理可以试一下sftp, scp等基于ssh的命令。
如运行ssh-add,遇到 Could not open a connection to your authentication agent.。
解决: 需要ssh-agent启动bash,或者说把bash挂到ssh-agent下面。
1 ssh免密码登陆及其原理
Q4: 怎样得到用户公钥文件authorized
1、首先生成公钥。 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”-》“创建公钥”。按照步骤执行。其中一步比较重要就是选择公钥的格式。建议选择“OpenSSH”,否则在服务器端使用时需要转换为OpenSSH各式。何必多次一举呢。所以这里必须选择“OpenSSH”。如果选错了。重新生成一次就可以了。 然后选择公钥私钥存放的地方。默认Identity是私钥,Identity.pub是公钥。 2、把Identity.pub文件上传到你要登陆的Linux服务器上。方法有很多,比如ssh(先不要配置为公钥登陆),ftp等。具体操作自己搞定。上传时选择ASCII方式。 3、在SecureCRT创建服务器连接。协议使用ssh。在“鉴权”方法中,取消勾选“密码”。选择“公钥”,然后点击右边的属性按钮,在对话框中。使用全局公钥设置:表示所有连接都使用该公钥连接服务器。 使用会话公钥设置:可以分别为每个连接指定不同的公钥。 下面的路径就是指明私钥的具体路径。注意了,这里要指明私钥的路径。 保存连接就可以了。 Linux服务器端配置 1、sshd_conf配置 主要修改如下几个内容: PermitRootLogin no # 默认为注释,先配置为禁止root用户登陆,允许root登陆太危险了。好几次差点犯错误。切记切记! RSAAuthentication yes #默认为注释, 启用 RSA 认证 AuthorizedKeysFile .ssh/authorized_keys # 验证公钥的存放路径 PubkeyAuthentication yes # 默认为注释,启用公钥认证 PasswordAuthentication no # 禁止密码认证,默认是打开的。 保持后,重新启动ssh服务。在不同的linux服务器上,重启的方法不同。 RedHat,CentOS: service sshd restart //redhat 7 的方法已经改了。 openbsd,freebsd: /etc/rc.d/sshd restart 2、重点部分:配置公钥存放哪的问题。 要把第一部分上传上来的公钥放到用户home目录的.ssh/ 目录下。这里说明一下。如果你想使用test账号登陆,就要把公钥放到test账户的.ssh目录下。你可以直接把Identity.pub改为authorized_keys. 当然也可还是用其他方法。 比如:cat Identity.pub authorized_keys 另外说明一下。.ssh目录权限是700,authorized_keys文件权限为644. 重点补充,如果还有其他人也想用自己的公钥登陆服务器,该如何操作呢? 正常操作应该为该用户在服务器上创建一个账号,重新执行本次(Linux服务器端配置,第2点)操作。当然,你也可以偷懒,把他的公钥也放到test账号的authorized_keys文件中。但两个公钥的内容之间使用换行符隔开。这样的方法还是不可取的。 最后,使用SecureCRT登陆linux服务器。 这里要注意,即使你使用公钥登陆服务器,当你连接的时候,还是要你输入用户名。为何呢?不是说公钥验证么?其实,服务器要知道用你的私钥和哪个用户的.ssh目录下的authorized_keys文件内容进行解密。不可能用你的私钥和所有的用户authorized_keys文件进行匹配测试。 但是也有例外,如果你在linux系统上使用公钥登陆Linux服务器,就不需要指明用户。方法如下: # ssh 172.16.24.222 为何呢?这时系统默认以为你登陆的远程账号就是你当前登陆的账号。 如果你设置了公钥口令,连接时比如输入。为了安全,这个口令是必须要有的。在SecureCRT中,口令被翻译为:通行短语。呵呵。 补充一下,在linux系统上,如何创建公钥和私钥呢? 方法很简单,执行ssh-keygen命令,按照提示就可以完成。完成后,自动会在当前用户的home目录,创建.ssh文件夹。 服务器端配置和上面的方法相同。
Q5: 公私钥生成
步骤一:在windows操作系统上安装Win64OpenSSL软件linux生成公钥的命令; 步骤二:打开Win64OpenSSL软件linux生成公钥的命令,首先生成私钥,命令为:ecparam -genkey -name SM2 -out priv.key;
步骤三:再通过生成的私钥生成公钥,命令为:ec -in priv.key -pubout -out pub.key。
验证SM2生成的公私钥 步骤一:首先创建一个file.txt文件(示例放在公私钥同级目录下);
步骤二:打开Win64OpenSSL软件,首先根据私钥生成签名,命令为:dgst -sign priv.key -sha1 -out sha1_sm2_file.sign file.txt
步骤三:再根据公钥去验证生成的签名,如果公钥和私钥相互匹配,那么生成SM2公私钥成功,命令为:dgst -verify pub.key -sha1 -signature sha1_sm2_file.sign file.txt
文件地址需要修改.上述直接放在d盘中,最后为.key 或者.pem
Download ( GmSSL-master.zip ), uncompress it and go to the source code folder. On Linux and OS X , run the following commands:
安装后,输入gmssl version,报错:
添加两条软连接:
生成私钥
生成公钥
参考 ( )
上面生成的公私钥都没法给gmss sm2使用,可以进行加密解密,但是结果是错的
由于提供的公私钥为base64格式,故要进行转码.
四、其linux生成公钥的命令他格式互转
字符串与base64不能直接转,需要先转到bytes
关于linux生成公钥的命令和linux如何生成公钥的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






