linux生成公钥的命令 linux如何生成公钥

10.ssh公钥在哪SSH(Secure Shell)是一套协议标准linux生成公钥的命令 , 可以用来实现两台机器之间linux生成公钥的命令的安全登录以及安全linux生成公钥的命令的数据传送linux生成公钥的命令,其保证数据安全的原理是非对称加密 。
SSH还常用来远程登录到别的机器,
有两种常用的方法, 账号密码登录 和 利用公钥登录
公钥linux生成公钥的命令:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密
私钥: 用来解密公钥加密的数据 。
ssh 无密码登录要使用公钥与私钥 。linux下可以用用ssh-keygen生成公钥/私钥对 。
一般采用的ssh的rsa密钥:
下述命令产生不同类型的密钥
Windows10下.ssh目录的路径在用户命令下的.ssh文件下
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时 , 并没有输入用户密码就登陆成功了!其实挺简单的不是吗?
设置Linux服务器通过密钥登录首先在服务器上制作密钥对
密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用 。当然,也可以留空,实现无密码登录 。
现在 , 在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件 。id_rsa 为私钥,id_rsa.pub 为公钥 。
键入以下命令 , 在服务器上安装公钥:
如此便完成了公钥的安装 。为了确保连接成功 , 请保证以下文件权限正确:
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
最后,重启 SSH 服务:
将打印出的结果保存成id_rsa文件,供ssh客户端登陆使用
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下面 。
1ssh免密码登陆及其原理
怎样得到用户公钥文件authorized1、首先生成公钥 。打开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 restart2、重点部分:配置公钥存放哪的问题 。要把第一部分上传上来的公钥放到用户home目录的.ssh/ 目录下 。这里说明一下 。如果你想使用test账号登陆,就要把公钥放到test账户的.ssh目录下 。你可以直接把Identity.pub改为authorized_keys. 当然也可还是用其他方法 。比如:cat Identity.pubauthorized_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文件夹 。服务器端配置和上面的方法相同 。
公私钥生成 步骤一:在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如何生成公钥】关于linux生成公钥的命令和linux如何生成公钥的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读