SSH 密钥远程登陆 禁止ROOT远程登陆 禁止用户密码登陆
这仅是我对自己经验的一点积累,若能帮助别人,万分荣幸,若有错误,也请多多指教!
客户端:
--系统:fedora18
--用户:kuku
服务器端:
--系统:RHEL 5.4
--用户:raffy
登陆方式:使用SSH命令,通过密钥远程登陆服务器。
不涉及:在windows下使用putty,secureCRT等工具远程登陆(网上已经很多了)。
步骤:
1.在客户端使用命令生成RSA密钥(一次性生成公钥和私钥):$ ssh-keygen -t rsa
根据提示,指定生成密钥的目录
(默认是/home/kuku/.ssh,.ssh是隐藏文件,用 ll -a 查看,如果发现自己的默认目录下没有.ssh文件,则应自己创建,否则要通过改sshd_config文件来修改认证文件所在 目录,这里不讨论了),
并输入密钥口令
(若不希望设置口令则直接回车,否则口令至少5位)。
2.生成的密钥文件为:id_rsa(私钥), id_rsa.pub(公钥),私钥留在客户端 /home/kuku/.ssh 目录下,将公钥拷贝到服务器端的 /home/raffy/.ssh 目录下,我用的方法是 sftp,具体就不说了,用rcp, ftp, u盘拷贝都是一样的。
3.如过服务器端该目录下没有 authorized_keys 文件,可以直接将 id_rsa.pub 文件重命名为 authorized_keys : $ mv id_rsa.pub authorized_keys。
如果已存在,则将 id_rsa.pub 的内容添加到 authorized_keys 文件的最后一行:$ cat id_rsa.pub >> authorized_keys
用 $ vi authorized_keys 检查是否已经成功导入内容,如果导入失败,可能是对文件的操作权限问题,用 chmod 修改文件权限,再试。
不出意外的话,就可以在客户端用 SSH 命令远程登陆 RHEL 5.4了。
4.可能遇到的问题:
我只遇到了一个问题:publickey, gssapi-with-mic
由于服务器端 .ssh 目录和 authorized_keys 文件的权限设置不当,我试了以下,若把 .ssh 或 authorized_keys 的权限 设置在 700 或更低,就没有问题,也就是说只有
除了所有者以外的任何人不得对他们拥有任何权限。这当然是出于安全和一致性的考虑,通常建议是 .ssh 文件的权限为 700 ,authorized_keys 的权限是 600 。
存在客户端的私钥如果设置高于700的权限会直接拒绝登陆。
5.服务器端拒绝 root SSH登陆以及普通用户密码登陆:
这项设置需要 root 权限,配置 /etc/ssh 目录下的 sshd_config 文件,因为 sshd_config 只有在权限为 600 时才会生效 (这点很重要!),所以修改完后一定记住查看
权限是否为 600 ,不是的话需要手动修改。
拒绝 root SSH登陆:PermitRootLogin no
拒绝普通用户密码登陆:PasswordAuthentication no
普通用户密钥登陆:PubkeyAuthentication yes
RSAAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys (这就是前面提到的认证目录,不过我没改过)
设置完成后,查看文件权限没问题,重启 SSH 服务:$ service sshd stop
$ service sshd start
到此结束。
2014-04-18:前几天有个朋友告诉我,他们单位(某行)的服务器设置用户的home目录权限过高,为775,导致客户端ssh无法链接,改为755就可以了。感觉略吊~