利用xshell密钥管理服务器远程登录+VIM dd命令操作之伤之再伤
1、打开Xshell界面,中文界面方便操作,菜单栏:工具——新建用户密钥生成向导
2、密钥类型选择RSA,密钥长度选择2048位,单击下一步继续;
3、很快生成公钥对,单击下一步继续;
4、密钥名称可以自定义,起一个自己理解的名称,或者保持默认,输入密钥加密的密码,用于远程登录;
5、将生成的公钥复制一份,或保存为文件,完成密钥生成。
6、复制生成的公钥到远程linux要登陆的用户家目录里面 ~/.ssh/authorized_keys 文件中。如果没有.ssh目录,需要自己建立一个,并更改目录权限为700(744把读的权限也给连接)
[root@localhost ~]# mkdir /webuser/.ssh
[root@localhost ~]# chmod 700 /webuser/.ssh/
[root@localhost ~]# vim /webuser/.ssh/authorized_keys
粘贴公钥的内容,保存退出。
在进行粘贴操作时哥们痛苦了,用vim的dd删除命令删除后 粘贴新的公钥,发现竟然TMD多了一行 一直导致 连接时提示远程未注册(哥们都操了!)
后来是 用 删除键一个个字符删掉再拷贝才成功!dd,你为毛要删除再粘贴前面多一行啊!55555555555
另外特别注意:
上传公钥至服务器之后要修改
A - 将我们生成的webuse.pub公钥文件上传到/webuse/.ssh文件夹下面(如果没有我们需要创建),然后我们需要将webuse.pub重命名为authorized_keys (千万写敲错)并且用chmod 600 authorized_keys设置权限。
B - 找到/etc/ssh/sshd_config ,把RSAAuthentication和PubkeyAuthentication两行前面的#注释去掉。(这是重点)
C - 重启SSHD服务
7、关闭远程linux防火墙,千万不要漏掉这一部分;(哥们没有设置,照样成功!)
永久关闭selinux
#vi /etc/selinux/config #修改selinux的配置文件
更改“SELINUX=enforcing”为 SELINUX=disabled 保存退出。
[root@localhost ~]# /usr/sbin/sestatus -v #查看selinux的状态命令
SELinux status: disabled
关闭防火墙
[root@localhost ~]# iptables -F #清空防火墙配置
[root@localhost ~]# /etc/init.d/iptables save #清空防火墙配置后,记得保存
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
8、新建一个窗口,名称写一个方便标示的,主机填写远程linux的ip地址;
9、点击左侧用户身份验证,方法下拉菜单里面选择Public Key,用户名为webuser,用户密钥下拉菜单选择之前生成的密钥,或者浏览里面选择,密码填写生成密钥时设置的密码,点击连接就可以远程访问linux了。
错误提示:
xshell登录时,提示“所选的用户密钥未在远程主机上注册 ”
跟踪
登陆目标机器,查看sshd的日志信息。日志信息目录为,/var/log/secure
你会发现如下字样的日志信息。
Jul 22 14:20:33 v138020.go sshd[4917]: Authentication refused: bad ownership or modes for directory /home/webuser
原因
sshd为了安全,对属主的目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
用户目录权限为 755 或者 700,就是不能是77x。
.ssh目录权限一般为755或者700。
rsa_id.pub 及authorized_keys权限一般为644
rsa_id权限必须为600
解决方法
检测目录权限,把不符合要求的按要求设置权限即可。
我的网站目录也在当前用户家目录下 单独设置权限即可