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/.ssh/authorized_keys
意思是我的authorized_keys权限问题,我查看一下该文件权限

[root@Zenoss .ssh]# ll authorized_keys
-rw-rw-r-- 1 sysadmin sysadmin 791  8月 10 09:01 authorized_keys
随后我查看了一下其它服务器通过ssh-copy-id 命令拷贝生成的authorized_keys文件权限

[root@Zenoss .ssh]# ll authorized_keys
-rw------- 1 sysadmin sysadmin 393  8月 10 09:46 authorized_keys
果然权限是不同的,我把authorized_keys文件权限改到600,之后就可以正常密钥登录了。

为了搞清楚这是原因,我查阅了一下官方的文档 http://man.openbsd.org/sshd_config 发现了一个这样的配置参数

StrictModes
Specifies whether sshd(8) should check file modes and ownership of the user’s files and
home directory before accepting login. This is normally desirable because novices
sometimes accidentally leave their directory or files world-writable. The default
is “yes”. Note that this does not apply to ChrootDirectory, whose permissions and
ownership are checked unconditionally.

意思是:sshd在接受登录前检查会检查用户的家目录和文件权限模式,可以通过设置no来关闭检查,但为了安全起见,建议不要更改此选项,配置好家目录和文件权限才是正解!
正常的权限如下:

[root@Zenoss home]# ls -ld sysadmin/
drwx------. 7 sysadmin sysadmin 4096  8月 10 09:46 sysadmin/

[root@Zenoss sysadmin]# ls -ld .ssh/
drwx------. 2 sysadmin sysadmin 4096  8月 10 09:46 .ssh/

[root@Zenoss .ssh]# ls -l authorized_keys
-rw------- 1 sysadmin sysadmin 393  8月 10 09:46 authorized_keys

正常通过ssh-copy-id 命令自动生成的authorized_keys 就是600,就不会出现上述问题了。

时间: 2024-09-17 14:29:48

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

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

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中ssh无法登录可以su切换的问题解决办法

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

问题描述 linux下root用户切换到普通用户执行ssh远程登录失败 这样,我想做一个web一件抓取日志的小程序,后台python调用ssh登录到远程主机执行系统命令抓取符合条件的日志,这个程序集成在一个运行在root下的web站中,然而服务器 设定了root用户不能用ssh远程登录.我想请教是否可能在程序中切换到普通用户登录ssh远程登录其他主机执行ssh命令,然后再切回root...或者是否有其他好的方法来实现这一 功能.(很多台服务器,一次性抓取符合条件的日志) 解决方案 linux下如

在ASP.net中的UpdatePanel,弹窗失败解决办法

原文:在ASP.net中的UpdatePanel,弹窗失败解决办法 最开始我用: Response.Write("<script>alert('和哈呵呵呵呵呵呵!')</script>"); 在没有UpdatePanel时,这个有效,能够正确弹出提示窗口. 后面,页面改进,加上局部刷新后,该方式失效了.探索出新的方式:   ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(),

ssh由于登录失败而无法启动服务的问题

ssh 由于登录失败而无法启动服务 [分析与解决] $ net start sshd 发生系统错误 1069. 由于登录失败而无法启动服务. 分析:这是由于用户密码输入错误导致的,以后更改用户后sshd也可能发生这个问题,在 services.msc 里的登录标签里更改用户设置即可! 如果修改密码后,还是无法启动sshd服务,建议卸载该服务,删出cyg_server,sshd用户,并重新安装,同时执行/bin/sh.sh脚本,所需要的命令如下: cygwin下sshd服务 开启    net