linux中ssh密钥登录失败问题解决办法

搞一个ssh的密钥登录,结果发现就是无法使用密钥登录,非让我输入密码。苦恼。

输入ssh连接代码

ssh -i private.key -v user@host.com -p22

从连接的信息中看不出有什么问题。

debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering public key: private.key
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: password

已经提示说了,使用公钥登录,并且提供了私钥,但是还是提示让我输入密码。

但是我使用另外一个帐号去登录,发现是ok的,可以登录成功。我把成功的那个`authorized_keys`复制到我的那个用户名下,发现还是不能登录。但是验证了服务器的sshd功能是正常运行的,否则另外一个账户就没办法登录了。我觉得两个用户名的所在的环境应该是相同了,但是确实无法登录。

想到了客户端这里的连接没有更多有效的信息,那就想到了去服务器上看看相关的信息。`vim /var/log/secure`查看一下日志。发现有这么一段话:

Authentication refused: bad ownership or modes for directory /home/user/.ssh

上网搜了一下这个问题,发现原来是`.ssh`的目录权限不对,设置一下正确的权限:

chmod 700 ~/.ssh

在此过程中还学习到了一个sshd的测试模式。

/usr/sbin/sshd -p 10022 -d
     -d     以调试模式运行。服务器将在前台运行并发送非常详细的调试日志信息,
            服务器将只允许接入一个连接,并且不派生出子进程。仅用于调试目的。
            使用多个 -d 选项可以输出更详细的调试信息(最多3个)。
会开启一个sshd的调试模式,新建一个10022端口,在客户端连接这个端口的时候,服务器端会有debug日志输出在屏幕上,这个时候就可以查看详细的信息。然后再针对信息进行解决。

## 总结
服务器用户对于ssh目录权限有一些权限要求,权限不对的话ssh无法工作,建议以下权限作为最小的权限。

chmod 700 .ssh          # chmod 755 .ssh 也是可以的
chmod 600 .ssh/authorized_keys
chmod 400 .ssh/private.key  #把密钥的权限也设置为最小

终于又可以愉快的编程了。

时间: 2024-10-31 23:33:20

linux中ssh密钥登录失败问题解决办法的相关文章

linux中ssh密钥登录失败解决办法

今天我在设置ssh密钥登录的时候,发现这个奇怪的情况,我将我的id_rsa.pub密钥内容拷贝到远程linux主机的A用户的.ssh下的authorized_keys(这个文件我手动建立的)下,但是再次登录时,发现还需要输入密码,额?这不科学!然后我查看了一下远程linux主机的sshd日志 /var/log/secure 发现了如下日志输出内容: Authentication refused: bad ownership or modes for file /home/sysadmin/.ss

linux中Neo4j Server启动失败问题解决办法

最近需要用到Neo4j做个小试验,看似顺利安装却在启动server的时候报错.最终发现问题是JDK1.7安装时,少修改了一个symlink. 我的安装步骤如下: 从Oracle下载了JDK1.7,在~/.bashrc里修改了JAVA_HOME变量.  代码如下 复制代码 export JAVA_HOME=/usr/libexec/java_home -v 1.7 检查了一下当前jdk版本.  代码如下 复制代码 > source ~/.bashrc > java -version java v

linux下SSH密钥登录VPS服务器的方法

linux的默认登录方式是账号和密码登陆,如果改成用密钥登陆的话会相对安全一些,但密钥登陆有利也有弊,想登陆VPS的话必须随身携带密钥文件,如果修改了默认root用户名还要修改相应的对应关系比较繁琐. 好了下面讲解如何用密钥登陆吧 准备工作: mkdir .ssh touch /root/.ssh/authorized_keys 1.创建一把锁和一把钥匙 运行:ssh-keygen -t rsa 三次回车 生成公钥id_rsa.pub和私匙id_rsa,默认存放在/root/.ssh/目录下 (

linux中Pure-FTPd出现“登录失败: 530 Login authentication failed”

 FTPd是一款不错的ftp软件了,但今天小编设置问题导致Pure-FTPd出现"登录失败: 530 Login authentication failed"了,下面我们一起来看问题的解决办法了.     再次遭遇Pure-FTPd"登录失败: 530 Login authentication failed"的问题,这一次的原因竟然是虚拟用户uid小于pure-ftpd.conf中的MinUID值,现在详细说明整个查错过程. 一般情况下,我是使用yum来安装pure

linux中Firefox浏览器flash 崩溃问题解决办法

这一篇介绍一种 Linux 系统下 flash 崩溃的解决办法. 环境如下: 操作系统:openSUSE 13.2 32 位 浏览器:Firefox 34 版本 状况:凡使用 flash 的页面均出现 Adobe Flash 插件已崩溃. 尝试 Chrome 浏览器,同样存在问题: Shockwave Flash has crashed. 排查步骤如下: 打开 Firefox 附加组件页面,检查 flash 相关插件的安装情况,如下图: 我们能看到两个版本的 flash 插件: Shockwav

linux中ssh无法登录可以su切换的问题解决办法

一.故障现象 接业务侧同事邮件,一台现网主机使用正确的用户名密码 ssh 登录不上(之前正常),使用其他用户 " su - 该用户 " 输入密码可以正常切换进去.而且使用该用户进行 ftp 登录也正常. 主机系统:SUSE Linux Enterprise Server 10 (x86_64) sp1 ----系统有点老旧了 问题用户:prestat ------其他用户正常 二.排查 1.chage指令查看 首先使用prestat 用户及密码进行ssh 登录尝试,发现问题同业务侧同事

linux中ssh可以登录sftp不能登录解决办法

我的服务器一直正常使用,平时使用secureCRT进行管理,使用secureFX进行文件的上传下载,突然有一天secureFX连接的时候出问题了,secureFX的日志如下: i SecureFX 版本 6.6.1.289 (Official Release - November 4, 2010) i 会话 00002 成功建立(为) session mydomain_218.245.0.54_cd.mydomain.com i SSH2Core version 6.6.0.289 i 正在连接

linux中 Nginx 常见502错误问题解决办法

常见的Nginx 502 Bad Gateway解决办法如下: Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fpm.conf 文件,将其中的max_children值适当增加.这个数据要依据你的VPS或独立服务器的配置进行设置.一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多. /usr/local/php/sbin/php-f

linux中"dig: command not found"问题解决办法

今天老蒋有在调试Dnsmasq创建本地DNS服务器的时候有需要用到dig命令测试效果,但是默认Linux系统中好像没有安装dig支持组件.于是有错误提示"-bash: dig: command not found". 快速解决"dig: command not found"问题 主要问题是默认系统中缺少bind-utils工具包导致的,我们直接yum安装看看呗. yum -y install bind-utils 这样,我们在安装工具包之后,再去dig命令就没有任何