Linux系统下SSH问题处理集合

ssh链接报错,免密不生效等情况分析和处理。

概要

首先,我们应该先排除服务器宕机,网络不通等外部情况。
如果对现象非常明显,可以先根据经验处理。
如果依然未解决,则尽可能获取报错,日志等信息来分析。
1. ssh时,加上-v(v的个数越多日志越详细)来输出客户端的日志信息。
2. 想别的办法进入服务器,看sshd的日志。

# 开一个调试模式的sshd来测试
/usr/sbin/sshd -p 2222 -d

问题列表

免密登录失败

linux如果免密登录失败,会要求输入密码。默认不会打印任何报错信息,此时需要加上-v来打印一些日志。
以下是一些已知问题的解决办法,可根据报错信息检索或挨个尝试。

目录文件权限问题

秘钥是放在用户目录下的.ssh目录下。这个权限过于宽松就会导致问题。日志中通常会有体现。

Permissions 0777 for '/home/myuser/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
What permissions levels should i give to the id_rsa file?
  1. ~/ 权限 700
  2. ~/.ssh,权限 700
  3. ~/.ssh/id_rsa,权限600
  4. ~/.ssh/authorized_keys 权限 600
修复脚本
chmod 700 ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/authorized_keys

authorized_keys文件名错误

这是容易被忽略的情况。

debug2: we did not send a packet, disable method

注意 ~/.ssh/authorized_keys 文件名有没有写错
没有这个文件,sshd会认为未启用sshkey登录。

其它报错

配置了AllowUsers导致账户无法登录

最近碰到一个问题,账号密码都正确,但ssh怎么都进不去。甚至sshkey免密也无法登录,无报错直接退出。这个问题最头疼的是,客户端并没有什么有效的信息输出。所以只能想办法进入服务器看看了。
通过别的账号登录服务器后,su到myuser中,测试账号密码。也发现账号密码是正确的。由此判断,问题出在sshd中,通过查看sshd的日志,终于发现了相关的报错信息。最终确认是由于sshd中的/etc/ssh/sshd_config,配置了AllowUsers导致的。

服务端报错信息
Apr  2 16:01:49 myhost[23612]: User myuser from myhost not allowed because not listed in AllowUsers
Apr  2 08:01:49 myhost sshd[23613]: input_userauth_request: invalid

将用户名配置到AllowUsers后,重启sshd即可正常登陆。 参考

伪终端请求分配失败

可能的应用程序泄漏了伪终端,比如大量的ssh。

PTY allocation request failed on channel
解决办法
umount /dev/pts
mount devpts /dev/pts -t devpts
ssh登录不了,如何在远程主机上执行命令?

tty的问题影响的是交互式登录,可以直接非交互的方式执行命令。

ssh ${ip} umount /dev/pts
ssh ${ip} mount devpts /dev/pts -t devpts
© 版权声明
THE END
广告
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容