centos7 sshd publickey 无密码登录 问题解决

1、centos7服务器产生密钥

#ssh-keygen -t rsa
#cp ~/.ssh/id_rsa.pub authorized_keys
#chmod 700 authorized_keys

2、sshd配置

vi /etc/ssh/sshd_config

PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys

重启sshd  #service sshd restart

3、拷贝密钥的私钥id_rsa到windows客户机

4、notepad++的NppFtp直接使用id_rsa做private key file即可登录。

具体配置:profile settings,connection tyle=SFTP ,填入hostname和username,private key file 选择 id_rsa。

putty配置:puttygen.exe load 文件id_rsa ,然后save private key 到文件 my.ppk。putty配置 connection->Data->Auto-login username填入root,ssh->AUTH选择my.ppk做private key file。


root用户可以无密码正常登录。

但 www用户同样配置却不能登录,提示 Server refused our key。查看/var/log/audit/audit.log显示avc:denied { read } 。

百度后提示与selinux有关,用restorecon -r -vv /var/www/.ssh可解决,但试过后仍不能登录。


查看root的authorized_keys 与www用户有什么不同

# ls -laZ /root/.ssh/authorized_keys
-rw-------. root root unconfined_u:object_r:ssh_home_t:s0 /root/.ssh/authorized_keys
# ls -laZ /var/www/.ssh/authorized_keys
-rwx------. www www unconfined_u:object_r:var_t:s0 /var/www/.ssh/authorized_keys

看到区别就是一个是ssh_home_t,一个是var_t

于是修改之:

# semanage fcontext -a -t ssh_home_t /var/www/.ssh/authorized_keys
# restorecon -r -vv /var/www/.ssh

# ls -laZ /var/www/.ssh/authorized_keys
-rwx------. www www unconfined_u:object_r:ssh_home_t:s0 /var/www/.ssh/authorized_keys

putty用www用户登录,成功。


你可能感兴趣的:(sshd,publickey,无密码登录,普通用户,selinux)