SSH 密钥登陆
Secure Shell(缩写为SSH,安全壳协议),一项计算机上的安全协议。 OpenSSH 支持 SSH 协议的版本 1.3、1.5、和 2。自从 OpenSSH 的版本2.9以来,默认的协议是版本2,该协议默认使用 RSA 钥匙。目前,为了节省Money,大多数情况均会采用OpenSSH。
一般来说,SSH提供了两种安全认证方式。
一是基于口令的安全认证。在这种认证方式下,用户只需要知道帐户与口令,就可以利用SSH协议远程登陆到服务器。在这种认证模式下,其传输的数据,包括用户名与密码,是密文传输的。但是,他有一种缺陷。也就是说,他不能够保证你正在连接的服务器就是你想连接的服务器。因为他不会验证客户端与服务器端的身份,所以,可能会有人冒充真正的服务器,而管理员却不知情。这种攻击方式,又叫做“中间人”攻击。也算是一个比较“著名”的攻击方式了。
二是基于密钥的安全认证。在这种安全认证方式下,需要依靠密钥进行认证。此时,用户需要为自己创建一对密钥。用户要通过其他安全的方式,把公钥方在需要远程管理的服务器上。当管理员连接到SSH服务器上的时候,客户端会向服务器发出请求,要求其利用客户端的密钥进行安全性认证。服务器收到客户端的请求后,就会利用你事先发给他的公钥进行比较、辨别。如要两个密钥一致的话,服务器就用公钥加密质询并把它发送给客户端软件。客户端软件接收到服务器的质询后,就可以利用私人密钥进行解密并把结果发送给服务器。这种方式跟第一种方式相比,就是可以保障SSH服务器的合法性,有效的避免“中间人”攻击。
基于口令认证比较容易理解,这里主要提供第二种认证方式的操作过程,以 SSH2版本来演示:
客户端IP: 10.6.1.1 客户端账号:kevon 服务端IP: 10.6.2.2 服务端账号:user00
1. 生成公钥、私钥
kevon@[ISD_64]/home/kevon $ ssh-keygen2 -t rsa Generating 2048-bit rsa key pair 10 Oo.oOo.oOo.o Key generated. 2048-bit rsa, kevon@ISD_64, Fri Sep 27 2013 16:49:19 +0800 Passphrase : Again : Key is stored with NULL passphrase. (You can ignore the following warning if you are generating hostkeys.) This is not recommended. Don't do this unless you know what you're doing. If file system protections fail (someone can access the keyfile), or if the super-user is malicious, your key can be used without the deciphering effort. Private key saved to /home/kevon/.ssh2/id_rsa_2048_c Public key saved to /home/kevon/.ssh2/id_rsa_2048_c.pub
2. 上一步会生成两个文件,私钥:id_rsa 公钥:id_rsa.pub,名称中的其他标识无需管它。
私钥原地踏步,不要移动,把公钥放到目标机器上,如下:
kevon@[ISD_64]/home/kevon $ scp ~/.ssh2/id_rsa_2048_c.pub user00@10.6.2.2:.ssh2/kevon_test.pub && echo "IdKey id_rsa_2048_c" >> .ssh2/identification3. 使用口令方式 user00登陆10.6.2.2,把 “kevon_test.pub” 放入验证文件列表
ISD_64:/home/user00 # echo "Key kevon_test.pub" >> .ssh2/authorization
现在回到客户端,试试吧,不需要密码了。
提醒:
a> 在第一步生成秘钥对时,提示输入口令,这个口令是为了防止当你的私钥被别人拿到之后使用你的身份登陆目标机器。
b> 如果要想登陆别的目标机器,就不需要再生成密钥对了,直接把公钥复制到目标机器,然后把名称加入authorization 即可。
参考文献:http://www.ibm.com/developerworks/cn/linux/security/openssh/part1/index.html