pg和secring.gpg中。
[alice@localhost]$ ls ~/.gnupg [alice@localhost]$ echo no-secmem-warning >> ~/.gnupg/gpg.conf
[alice@localhost]$ gpg --list-keys /home/alice/.gnupg/pubring.gpg ------------------------------ pub 1024D/168F25D7 2003-09-18 Alice (demo key) <alice@station1.com> sub 1024g/CE26F831 2003-09-18
[alice@localhost]$ gpg --list-secret-keys /home/alice/.gnupg/secring.gpg ------------------------------ sec 1024D/168F25D7 2003-09-18 Alice (demo key) <alice@station1.com> ssb 1024g/CE26F831 2003-09-18
4.让bob把他的公钥放在ASCII文件中以便方便的传递给alice。接下来,让alice导入bob的公钥到她的公钥环中去。
[bob@localhost]$ gpg --export --armor Bobby > /tmp/bob.key [bob@localhost]$ cat /tmp/bob.key
[alice@localhost]$ gpg --import /tmp/bob.key [alice@localhost]$ gpg --list-keys /home/alice/.gnupg/pubring.gpg ------------------------------ pub 1024D/168F25D7 2003-09-18 Alice <alice@station1.com> sub 1024g/CE26F831 2003-09-18
pub 1024D/67C0F0AD 2003-09-18 Bobby <bob@ station1.com > sub 1024g/FDD05A7A 2003-09-18
5.现在alice获得了bob公钥的副本,并且把它加入到她的公钥环中去。她可以给bob发送加密的消息。使用下面的命令步骤来使得alice发送给bob一个加密的/var/log/dmesg的副本。
[alice@localhost]$ cp /var/log/dmesg message.txt [alice@localhost]$ gpg --encrypt --armor --recipient Bobby message.txt
[alice@ station1]$ head message.txt.asc -----BEGIN PGP MESSAGE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org
hQEOAzUJ6BL90Fp6EAP+J1gPH9RHQ1C+CaJGWSzUD2A603nspW2Ab+fQy7rmJbSA 5lwIPe5IzdmgSwMy80aefARQokI/cgdiWpb20Wzy2bltP413j/mrOiworKCOKguH IJDQPqYxeticJSbwdZoTozsnLmWKp4uxappv3IaSI91w7REgN0KcwVetIn6UsYsE AIKOqs1oXdYfU3Kzmt3DficQsZDgCuU1mVESCprb7Iyo/TvjjNuc9imqskrSveZZ vFU8Loc7uI+gQ4HGUpFNryErMbaR2+KQnJCIz9GZJG/Lr7tFND4wCkFsu3jXvN6e hUl5KRmRV3MWAkdOT4E3ZYF3dOhrdScxnpeIZdL5IDPo0usB9t2ZgIPHp9jKIIAc
[alice@localhost]$ mail -s "here it is" bob <message.txt.asc
6.现在让bob检查他的邮件,保存alice的邮件到文件。如果您不熟悉邮件客户端,您可以使用一个简单的基于命令行的mail工具
[bob@localhost]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/bob": 1 message 1 new >N 1 alice@stationa Thu Sep 18 22:02 84/4746 "here it is" & w message_from_alice "message_from_alice" [New file] & q
[bob@localhost]$ less message_from_alice [bob@localhost]$ gpg message_from_alice
您将被提示作为纯文本文件的文件名。使用缺省的message.txt。注意gpg自动的执行期望的动作,即,使用恰当的私钥进行解密。缺省的行为可以通过命令行的参数进行改变。
附加的步骤1的练习
1.使用gpg,使得alice能够向bob发送使用对成密钥加密的消息。
2.使得alice签署和加密消息给bob,bob需要什么其他的附加信息来验证签名
3.使得alice为她的消息建立一个拆离的签名,发送给bob消息和签名。让bob来验证拆离的签名
4.让bob签署alice的公钥,由此使得别人相信alice就是公钥的主人。
步骤2:使用ssh来进行加密的传输
场景A
alice和bob可能是不同工作站上的用户,他们希望建立等同的帐号。也就是说,alice希望访问bob的帐号而不需要输入密码,反之亦然。您将使用ssh提供如此的等同性。
在此步骤中提到的stationa指的是用户alice,然而stationb指的是用户bob。在执行此试验的时候您只需调正西医的步骤以适应您的主机名称。如果您的伙伴一起做这个试验,那么stationa和stationb指的就是您的机器的名称和他的机器的名称。如果您使用单一的机器,那么所有的机器名称将设定为localhost。
1. 确保适当的RPM软件包被安装 [alice@stationa]$ rpm -q openssh [alice@stationa]$ rpm -q openssh-clients [alice@stationa]$ rpm -q openssh-server
2.使得root帐户来确定bob机器上的sshd守护进程在运行 [root@stationb]# service sshd start [root@stationb]# service sshd status
3.如果alice知道bob的密码,那么她可以通过ssh来访问其帐户。注意所有的和bob帐户的交互过程都是加密的,包括密码的传递。作为alice,运行如下的命令,在合适的时候提供bob的密码。
[alice@stationa]$ ssh bob@stationb ls /tmp [alice@stationa]$ ssh bob@stationb [alice@stationa]$ scp bob@stationb:/etc/services . [alice@stationa]$ scp –r bob@stationb:/etc/xinetd.d .
4. 假设alice和bob希望采用更加安全的模式,让alice建立ssh的公钥和密钥对。注意到ssh-keygen应该被-t命令行开关启动,以至于密钥是通过DSA算法生成的。让alice检视其密钥(id_dsa)和公钥(id_dsa.pub)。
[alice@stationa]$ ssh-keygen –t dsa [alice@stationa]$ ls ~/.ssh [alice@stationa]$ less ~/.ssh/id_dsa [alice@stationa]$ less ~/.ssh/id_dsa.pub
选择缺省的密钥位置的选项。同时,在提示的时候,通过按下<ENTER>选择一个空密码 。
5.让alice寄给bob她的公钥的副本。让bob把这个副本保存到文件~/.ssh/authorized_keys中去。
[alice@stationa]$ mail -s "my key" bob < ~/.ssh/id_dsa.pub
[bob@stationb]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/bob": 1 message 1 new >N 1 alice@stationa Fri Sep 19 15:56 13/982 "my key" & w alice_key "alice.key" [New file] & q
[bob@stationb]$ mkdir ~/.ssh; chmod 700 ~/.ssh [bob@stationb]$ cat alice_key >> ~/.ssh/autorized_keys [bob@stationb]$ chmod 600 ~/.ssh/autorized_keys
6. 假设所有的东西都在其正确的地方(即,bob在他的授权的密钥中拥有alice的公钥的副本),alice现在可以访问bob的帐号,而不用提供密码。
[alice@stationa] ssh bob@stationb id uid=508(bob) gid=508(bob) groups=508(bob)
[alice@stationa] ssh bob@stationb cvzf - /home/bob/ > \ > /tmp/bob.stationb.tgz
如果没有正确的配置的话,那么ssh仍然将会采用密码认证,并且提示alice输入密码。有几个步骤帮助您调试这种情况。首先,检查在服务器上的/var/log/messages和/var/log/secure文件以帮助您获得有用的信息。第二步,在ssh的客户端上采用-v命令行开关。这将会产生有用的调试信息。
7.对于bob也采用相同的配置,以至于其能够进入alice的帐户。
场景B
alice建立了公钥认证的Shell可以访问bob的帐户。她现在要求安全的访问(基于文本的)在bob机器上的Web服务。
1. 确保在bob机器上的Web服务运行正常。如果不是,那么通过root帐号登陆bob的机器,安装并且启动apache web服务。
[alice@stationa]$ lynx http://stationb/
2.使用ssh,使得alice连接到bob的帐户,为了达到另外一种效果,在alice的端口12345(或者其他未使用的端口)到bob的机器的Web服务器(端口80)建立一个加密的管道。
[alice@stationa]$ ssh bob@stationb –L 12345:stationb:80
(并且在另外一个终端)
[alice@stationa]$ lynx http://localhost:12345
alice将能够在步骤1和步骤2看到相同的Web页面。然而在第一步骤中,数据从Web服务器到alice的Lynx客户端是通过明文的方式发送的,这样很容易被嗅探到。在第二步中,数据包从Web服务器通过bob的ssh守护进程,通过密文的形式越过网络到达alice的ssh的客户端,并且解密和传送到alice的lynx客户端。
同时感谢Iknownothing参与翻译工作所付出的辛勤!感谢Mandy在0点后还要忍受那无节奏的打字声!
__________________
上一页 [1] [2] [3] [4] [5] [6] |