xshell密钥登录linux(这种验证方式比较安全)
首先生成密钥:工具→新建用户生成密钥导向
密钥类型:RSA 密钥长度:2048,下一步
提示你正在生成公钥和私钥对,下一步
这个就是生成的公钥,保存起来,待会要用,点击完成。
你的私钥,点击关闭
接下来以用户名密码的方式先登录系统,做如下配置:
1. #先确保你在用户家目录里,使用pwd查看,我是root登录,所以在/root下。
2. #再一个就是查看你的家目录下有没有.ssh隐藏目录,有的话直接进入,没有的话新建一个。
3.
4. mkdir .ssh
5. #新建.ssh目录
6.
7. chmod 700 .ssh
8. #赋予.ssh目录700权限
9.
10. cd .ssh
11. #进入.ssh目录
12.
13. touch authorized_keys
14. #新建一个authorized_keys文件
15.
16. chmod 600 authorized_keys
17. #赋予authorized_keys文件600权限
18.
19. vi authorized_keys
20. #使用vi编辑它
按i键进入编辑模式,把刚才Xshell生成的公钥黏贴进去,保存并退出。
1. vi /etc/ssh/sshd_config
2. #编辑sshd的配置文件
3.
4. 把下面两句前面的#号去掉
5. PubkeyAuthentication yes
6. AuthorizedKeysFile.ssh/authorized_keys
7.
8. 把yes改成no
9. PasswordAuthenticationno
10.
11. 最后保存并退出。
12.
13. service sshd restart
14. #重启sshd服务
15.
16. PS:如果你想禁止root远程登录,就把#PermitRootLogin yes这句去掉#号改成no即可
修改sshd_config配置文件
vim /etc/ssh/sshd_config (和上面一样)
PubkeyAuthentication yes #启用公告密钥配对认证方式
AuthorizedKeysFile .ssh / authorized_keys #设定PublicKey文件路径
RSAAuthentication yes #允许RSA密钥
PasswordAuthentication no #禁止密码验证登录,如果启用的话,RSA认证登录就没有意义了
重新加载sshd服务: /etc/init.d/sshd restart
open 新建一个连接,输入主机ip后:
这样的话就直接每次登陆了
也可以新建一个连接,输入ip,确定,弹出这样会话框:
就OK
注:
私钥,在Xshell里也叫用户密钥
公钥,在Xshell里也叫主机密钥
“所选的用户密钥未在远程主机上注册。请再试一次。”在登陆是xshell报错,检查服务器的selinux及iptables是否开启。
关闭防火墙(两种防火墙):不关闭密钥是不能够成功的
selinux netfilter(iptables)对应命令为后者
解决办法:
先关闭selinux: setenforce 0 此命令只能临时关闭
永久关闭需要更改配置:vi /etc/selinux/config
之前关闭过临时这里就关闭了,不然得重启
关闭netfilter: iptables -F 这个也是临时的清除,这样服务器重启后还得加载
service iptables save 这个命令保存到配置文件中,更改了防火墙规则