欢迎大家加扣群交流 55134079
xshell密钥登录linux(这种验证方式比较安全)
首先生成密钥:工具→新建用户生成密钥导向
密钥类型:RSA 密钥长度:2048,下一步
提示你正在生成公钥和私钥对,下一步
这个就是生成的公钥,保存起来,待会要用,点击完成。
你的私钥,点击关闭
接下来以用户名密码的方式先登录系统,做如下配置:
- #先确保你在用户家目录里,使用pwd查看,我是root登录,所以在/root下。
- #再一个就是查看你的家目录下有没有.ssh隐藏目录,有的话直接进入,没有的话新建一个。
- mkdir .ssh
- #新建.ssh目录
- chmod 700 .ssh
- #赋予.ssh目录700权限
- cd .ssh
- #进入.ssh目录
- touch authorized_keys
- #新建一个authorized_keys文件
- chmod 600 authorized_keys
- #赋予authorized_keys文件600权限
- vi authorized_keys
- #使用vi编辑它
按i键进入编辑模式,把刚才Xshell生成的公钥黏贴进去,保存并退出。
- vi /etc/ssh/sshd_config
- #编辑sshd的配置文件
- 把下面两句前面的#号去掉
- PubkeyAuthentication yes
- AuthorizedKeysFile.ssh/authorized_keys
- 把yes改成no
- PasswordAuthenticationno
- 最后保存并退出。
- service sshd restart
- #重启sshd服务
- PS:如果你想禁止root远程登录,就把#PermitRootLogin yes这句去掉#号改成no即可
修改sshd_config配置文件
vim /etc/ssh/sshd_config (和上面一样)
1
2
3
4
|
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 这个命令保存到配置文件中,更改了防火墙规则