在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的。telnet,因为其不安全性,在linux系统中被搁置使用了。
ssh有一套很有用的工具,其中的ssh-keygen可以用来生成private和public密钥.将生成的public密钥拷贝到远程机器后,可以使ssh到另外一台机器的登陆不用密码.具体方法如下.
1) 在本地机器中的~/.ssh/目录下执行下命令:
ssh-keygen -t rsa -C "your@email.com"
将生成两个文件,id_dsa和id_dsa.pub.
2) 将id_dsa.pub拷贝到远程机器,并且将id_dsa.pub的内容添加到~/.ssh/authorized_keys中.
cat id_dsa.pub >>authorized_keys
注意:目录.ssh和文件authorized_keys的权限必须是600.
完成这些工作后,用户从本地机器到远程机器的登录就不用密码了.
3) 关闭密码登录(可选) 如果不想再使用密码登录,可以在/etc/ssh/sshd_config中关闭 把文件中的#PasswordAuthentication yes 的#去掉,并将”yes”改成”no” 系统默认使用基于密码的验证方式,现改为基于密钥的验证方式,从而提高了系统的安全性
UPDATE: 13-01-15 注意:如果是CentOS 6.3系统,默认会把用户的目录进行加密,所以放在/home/user下的文件都是加密的,如果直接使用这种方式登录,会提示一下错误:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
解决方法:
restorecon -R ~/.ssh
另外,如果你在Centos中建立了非root用户,则这个用户的.ssh目录的权限应该是700,authorized_keys文件的权限应该是644,可以用chmod去编辑对应的权限。
创建用户可以使用
useradd username
groupadd devs
usermod -G devs username