服务器公钥(最新免费服务器)

什么叫公钥

使用公钥加密的用户拥有一个私钥和一个公钥,并且他们与其他用户共享公钥。如果您要将一封私有短信发送给您的朋友 John Doe,您可以使用 John Doe的公钥(您已经将其存储在自已的 keyring中)加密该消息。John Doe收到该消息后,只有他可以使用他的私钥对其解密。任何给定用户的公钥和私钥在数学上是不能相关的。对于 PGP和其他公钥加密方法,不存在从公钥推断某人私钥的方法。

PGP的附加特性是:私钥的密码实际上不是密码,它是一个密码短语。它可以是整句话,包括标点符号、空格和所有字符样式。

使用基于 PGP的公钥加密的一种方法是使用 GNU Privacy Guard(GPG)。使用 GPG加密的任何消息都可以使用 GPG、PGP或支持任一程序的任何数量的电子邮件客户机插件来解密。在示例中,联机表接受用户输入(包括消息);使用 GPG为特定的接收方加密消息;然后发送消息。

清单 8.使用 GPG

<?php

//set up users

$from="webforms@example.com";

$to="you@example.com";

//cut the message down to size, remove HTML tags

$messagebody= strip_tags(substr($_POST['msg'],0,5000));

$message_body= escapeshellarg($messagebody);

$gpg_path='/usr/local/bin/gpg';

$home_dir='/htdocs/www';

$user_env='web';

$cmd="echo$message_body HOME=$home_dir USER=$user_env$gpg_path".

"--quiet--no-secmem-warning--encrypt--sign--armor".

"--recipient$to--local-user$from";

$message_body= `$cmd`;

mail($to,'Message from Web Form',$message_body,"From:$from");

?>

在此示例中,PHP调用/usr/local/bin/gpg(此位置因服务器而异),以便使用发送方的私钥和接收方的公钥加密消息。结果,只有接收方可以解密该消息,并且知道来自发送方的消息。此外,还可以设置 HOME和 USER环境变量,以通知 GPG在何处查找存储这些密钥的 keyring。其他标志的功能如下:

--quiet和--no-secmem-warning抑制来自 GPG的警告。

--encrypt执行加密。

--sign添加签名,以验证发送方的身份。

--armor产生非二进制的 ASCII输出,这样,易于通过电子邮件将其发送。

正常情况下,正如前面提到的,机密密钥受密码短语的保护。本特定实例没有使用密码短语,因为在每次表单提交时它都需要手工输入。当然,在下列情况下您还可以选择其他选项:在单独文件中提供短语,或使用它自已的身份验证方案防止表单公用(例如,如果它是一个只能由公司销售代表访问的表单)。

另请注意,除非您正在对允许用户输入电子邮件消息的表使用 SSL,否则键入的任何内容都是明文形式的。换句话说,客户机和服务器之间的任何人都可以看见它。不过,这是另一个主题。

服务器公钥私钥总结

在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。

公钥用来给数据加密,用公钥加密的数据只能使用私钥解密

用来解密公钥加密的数据。

对需要传输的文本,做一个HASH计算,一般采用SHA1,SHA2来获得

使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。

数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密。),得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。

是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。

公钥登录是为了解决每次登录服务器都要输入密码的问题,流行使用RSA加密方案,主要流程包含:

1、客户端生成RSA公钥和私钥

2、客户端将自己的公钥存放到服务器

3、客户端请求连接服务器,服务器将一个随机字符串加密后发送给客户端

4、客户端根据自己的私钥解密这个随机字符串之后再发送给服务器

5、服务器接受到字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

进入用户目录下.ssh目录:

id_rsa:私钥文件

id_rsa.pub:公钥文件

authorized_keys:保存其他公钥的的文件

known_hosts:已经建立过连接的服务器信息,可以清空。

1.执行命令:

此时会重新生成id_rsa私钥文件和id_rsa.pub公钥文件

用户将公钥发送给其他服务器,其他服务器将接受的公钥保存在authorized_keys里面。持有私钥的用户就可以登录服务器(authorized_keys存放自己的公钥,用户便可以使用私钥从其他的地方登录服务器)。

2.将公钥导入到vps

3.修改SSHD的配置文件/etc/ssh/sshd_config

4.重启SSH后进行测试

如何在SecureCRT上使用公钥登陆Linux服务器

配置过程分为两大部分,SecureCRT部分和Linux服务器部分。

SecureCRT部分配置

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文件夹。

服务器端配置和上面的方法相同。

阅读剩余
THE END