用密码登录总是不大安全的,最大的问题就是总是要修改密码,那么你能有多少密码呢,用密钥的话,隔断时间重新生成密钥,免去了想密码的烦恼。
基本方法是在客户端生成自己的私钥和密钥,将客户端生成的密钥传到服务端的密钥文件里,配置下服务器用密钥登录,就完成了。
以下以centos为服务器,客户端为windows,用putty
1.先用密码登录,在用户目录下建立目录.ssh,将此目录的权限设置为700,然后在此目录下建立一个新文件authorized_keys
# chmod 600 authorized_keys ##这一部是必须的
[/code]
2.配置服务器,去掉密码登录,使用密钥登录
vi /etc/ssh/sshd_config
Protocol 2
PasswordAuthentication no
PubkeyAuthentication yes ##使用key登录
AuthorizedKeysFile .ssh/authorized_keys ##key的名字
3.然后就可以用客户端的私钥来登录了,这样客户端的公钥被添加到服务器上的哪个用户文件里,就可以拥有哪个用户的权限。
这样其实很好解释,生成了两个文件,这两个文件可以互为验证。你先用密码登录,然后你就被验证过了,你将客户端的一个公钥导入当前用户,那么这个公钥对应的客户端私钥就有了这个用户的权限(因为你已经用密码登录过了)。
4.客户端用puttygen生成密钥
打开puttygen,点击generate,然后开始生成密钥,需要不断移动鼠标,生成客户端的私钥和公钥,如公钥保存为key_pub,私钥保存为key_private.ppk
5.上传客户端客户端的公钥到服务端,也就是将key_pub里的内容添加到authorized_keys里
6.完成后重启,完成服务器的配置
7.使用,客户端用putty的时候,点击SSH-Auth,选择刚才生成的私钥,然后就可以免密码登录了。
---------------------------来个不华丽的分割线-----------------------------
附linux下生成密钥对的过程
1.首先在服务器上生成密钥(当前是哪个用户,生成的就是这个用户的密钥,我先用root来)
[code="java"]
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##直接回车
Enter passphrase (empty for no passphrase): ##先不输入密码
Enter same passphrase again: ##不输入密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e0:21:b6:16:08:30:e2:c9:ad:a4:d0:be:00:b0:2f:ea root@test1.frady.info
# ls
id_rsa id_rsa.pub##自动生成两个文件
# mv id_rsa.pub authorized_keys ##重命名密钥,保持和/etc/sshd/sshd_config里的名称一致
[/code]