由于大家比较朴实,将实验室服务器密码设置成了程序员都知道的。但最近有些实验室连续最近出现了非法入侵现象(由于服务器连的是内网,估计是校内小朋友干的,太伤心了)。只能采用开启密钥认证,禁用密码登录。
相信大家RSA非对称加密的原理大家都了解,这里就不赘述了。
这里主要是window下xshell设置方法:
首先填入你需要连接服务器的基本信息。
下一步:
之后的对话框,点击下一步,下一步,下一步
选择RSA加密。
生成秘钥对,私钥和公钥。
这里输入私钥的名字和打开私钥的密码。
点击保存公钥文件(作用可以看看下图中的说明),本文保存的文件名为id_rsa_1024.txt。
将id_rsa_1024.txt 拷贝(如使用xftp,rz等)到需要秘钥认证的服务器。
登入服务器:
(如果没有.ssh文件夹)$ mkdir ~/.ssh
$ chmod 700 .ssh
$ cat id_rsa_1024.txt >> ~/.ssh/authorized_keys (id_rsa_1024.txt 是你public key的文件名)
$ rm ~/id_rsa_1024.txt
$ chmod 600 ~/.ssh/*
如果以上步骤不能实现不输密码登陆的话,需要检查sshd服务的Pubkey认证功能是否默认打开
/etc/ssh/sshd_config:
PubkeyAuthentication yes
如果修改后需要要重起你的ssh服务,用ssh –v来显示详细的登陆过程.
最后一步:关闭静态密码
建议不使用静态密码,以后都我们都使用key登录,修改如下内容可以关闭使用密码认证:
关闭Pam的传统密码认证.
PasswordAuthentication选项更改为 no
使用public登录:
选择刚才你跟公钥配对的私钥,输入你设置的打开私钥的秘密。点击ok即可登录。
其他:使用Export导出你的私钥给其他人使用。
其他人只有使用Import导入即可。
ps:关于两台服务器之间如何使用秘钥登录,这里给一个nopasswd脚本。
#!/bin/sh
scp ~/.ssh/id_dsa.pub $1@$2:~/
ssh $1@$2 " touch ~/.ssh/authorized_keys ; cat ~/id_dsa.pub >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys; exit"
执行方式 sh nopasswd USER REMOTE_HOST 注:USER 为另一台服务器用户名 REMOTE_HOST为另一台服务器ip地址。
执行此脚本前,请确认:
本机上已有 id_dsa.pub ,若无。 使用命令 ssh-keygen -t dsa 获得。
远程机上登录用户家目录下,已经有 .ssh 文件夹,若无创建之。
参考:
http://hi.baidu.com/beijiqieys/item/4643900f6ae51223a0312dc8
http://linuxroad.blog.51cto.com/765922/670723