ssh 免密登录配置后还是无效

ssh 免密登录配置后还是无效

配置ssh登录

[hadoop@bigdata1~]$ mkdir .ssh
[hadoop@bigdata1~]$ ssh-keygen -t rsa     //执行命令一路回车,生成秘钥
[hadoop@bigdata1~]$cd .ssh 
[hadoop@bigdata1.ssh]$ ls
id_rsa  id_rsa.pub
[hadoop@bigdata1.ssh]$ cat id_rsa.pub >> authorized_keys       //将公钥保存到authorized_keys认证文件中
[hadoop@bigdata1.ssh]$ ls
authorized_keys  id_rsa  id_rsa.pub
[hadoop@bigdata1.ssh]$ cd ..
[hadoop@bigdata1~]$ chmod 700 .ssh    //必须需要改为此权限
[hadoop@bigdata1~]$ chmod 600 .ssh/*  //必须需要改为此权限
[hadoop@bigdata1~]$ ssh bigdata1
The authenticity of host 'bigdata1(::1)' can't be established.
RSA key fingerprint is 6e:6b:0f:2a:b8:91:3f:c8:f0:39:e4:df:b4:d8:16:6b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bigdata1(::1)' (RSA) to the list of known hosts.
username@localhost's password:  

经过上面的ssh配置按理来说应该是可以密码登录的,但是事与愿违啊,还是不行!怎么办?找了好多资料都说是 chmod 700 .ssh 和chmod 600 .ssh/* 权限修改,但是我已经修改了啊,还是不行。最后冷静下来想想,是否还有上层的权限也需要修改呢?后来发现原来hadoop用户所在的目录下权限好像和其他用户的不对(/home/hadoop):

drwx---rwx 9 hadoop   hadoop   4096 Jul 31 10:16 hadoop //这里发现其他用户组的权限给大了

所以,改正hadoop用户目录的权限为 chmod 700 hadoop,然后再是试:

[hadoop@bigdata1~]$ ssh bigdata1
Last login: Mon Jul 31 10:47:37 2017 from bigdata1

解决了,惊喜不?意外不?刺激不?

<think>首先,用户的问题是:"请问PubkeyAuthentication注释掉SSH免密登录配置方法"。翻译成英文是:"HowtoconfigureSSHkey-basedauthenticationwhenPubkeyAuthenticationiscommentedout?"用户引用了两个来源:-引用[1]:提到SSH免密登录,确保/etc/ssh/sshd_config中的PubkeyAuthenticationyes没有被注释。-引用[2]:类似,强调去除注释以启用公钥认证。用户的核心问题是:如果PubkeyAuthentication被注释掉(即默认情况下),是否还能配置SSH免密登录?以及如何实现。现在,我需要根据系统级指令来回答:-所有行内数学表达式使用$...$,但这个问题不涉及数学,所以可能不需要。-独立公式使用$$...$$,但同样,这里没有数学。-LaTeX语法正确。-使用中文回答。-生成相关问题。-在引用的段落末尾添加引用标识,如[^1]。回答结构:-帮助用户逐步解决问题。-确保回答真实可靠。-参考用户上一次的问题和我的回答,但这是新对话,所以基于给定引用。关键点:-SSH免密登录依赖于公钥认证。-配置文件/etc/ssh/sshd_config中,PubkeyAuthentication设置控制是否允许公钥认证。-如果PubkeyAuthentication被注释掉,它可能默认启用或禁用,取决于SSH版本和发行版。-在大多数现代SSH版本中,PubkeyAuthentication默认是启用的,但用户提到它被注释掉,我们需要处理这种情况。真实知识:-SSH服务器配置文件sshd_config中,PubkeyAuthentication的默认行为:-如果被注释掉,默认通常是启用的(在OpenSSH中)。-但为了确保,最好取消注释并设置为yes。-如果PubkeyAuthentication被显式设置为no,那么公钥认证被禁用,无法配置免密登录。-用户说“注释掉”,意思是注释状态,而不是设置为no。如何实现:-如果PubkeyAuthentication被注释掉,但默认启用,免密登录应该工作。-如果不工作,需要编辑sshd_config文件:1.使用sudo编辑/etc/ssh/sshd_config。2.找到PubkeyAuthentication行。3.如果注释掉,取消注释并设置为yes。4.保存文件。5.重启SSH服务:sudosystemctlrestartsshd。-此外,确保其他相关设置正确,如AuthorizedKeysFile。如果用户无法修改服务器配置(例如,没有root权限),可能无法启用公钥认证,但用户的问题是关于配置方法,所以假设他们可以修改。回答结构:1.解释情况:如果PubkeyAuthentication被注释掉,它可能默认启用。2.建议检查默认行为。3.如果默认禁用或不确定,如何修改配置文件。4.步骤详细说明。生成相关问题:-基于主题,生成3-4个相关问题。最终回答:-以清晰结构:介绍、步骤、总结。-添加引用标识:在引用用户提供的引用时添加[^1]、[^2]。用户提供的引用:-[^1]:PubkeyAuthenticationyes,AuthorizedKeysFile.ssh/authorized_keys-[^2]:类似,强调去除注释。在我的回答中,当我提到这些点时,添加引用。</think>### SSH免密登录配置方法(当PubkeyAuthentication被注释时) 用户的问题聚焦于:在SSH服务器的配置文件`/etc/ssh/sshd_config`中,如果`PubkeyAuthentication`选项被注释掉(即前面有`#`符号),是否还能配置SSH免密登录(基于公钥认证),以及如何实现。我将基于SSH的工作原理和常见实践,逐步解答。回答参考了您提供的引用内容[^1][^2],并结合了SSH的默认行为分析。 #### 核心问题分析 - **PubkeyAuthentication的作用**:此选项控制SSH服务器是否允许使用公钥认证进行登录。如果设置为`yes`,则支持免密登录;如果设置为`no`,则完全禁用公钥认证。 - **注释掉的状态**:当`PubkeyAuthentication`被注释掉(例如`#PubkeyAuthentication yes`)时,其行为取决于SSH版本和系统默认配置: - 在大多数现代Linux发行版(如Ubuntu 20.04+或CentOS 8+)中,OpenSSH默认启用公钥认证,即使该行被注释掉[^1][^2]。 - 但在较旧系统或自定义配置中,注释掉可能等同于禁用(默认值可能为`no`)。因此,**如果PubkeyAuthentication被注释掉,免密登录可能仍然可行,但为了可靠,建议显式启用它**。 - **能否配置免密登录**: - **如果默认启用**:即使注释掉,免密登录也能工作(前提是公钥文件正确配置)。 - **如果默认禁用**:免密登录会失败,您必须修改配置文件以启用它。 为了确保成功,**强烈建议取消注释并设置`PubkeyAuthentication yes`**,以避免依赖不确定的默认值。 #### 配置步骤(无论是否注释) 以下是完整的SSH免密登录配置方法。如果`PubkeyAuthentication`被注释掉,请先检查并修改配置文件(步骤2)。假设您有服务器root权限(或sudo权限): 1. **生成SSH密钥对(在本地客户端执行)** 在您的本地机器上生成公钥和私钥。如果已有密钥,可跳过此步。 ```bash ssh-keygen -t rsa -b 4096 # 生成RSA密钥对,推荐4096位强度 ``` 生成后,公钥位于`~/.ssh/id_rsa.pub`,私钥位于`~/.ssh/id_rsa`。 2. **修改SSH服务器配置(在远程服务器上执行)** 编辑`/etc/ssh/sshd_config`文件,确保公钥认证启用: - 使用文本编辑器打开文件: ```bash sudo nano /etc/ssh/sshd_config # 或使用vi/vim ``` - 查找`PubkeyAuthentication`行: - 如果该行被注释(如`#PubkeyAuthentication yes`),**取消注释并设置为`yes`**。 - 如果不存在,添加一行`PubkeyAuthentication yes`。 - 同时检查其他相关设置(基于引用[^1][^2]): - 确保`AuthorizedKeysFile .ssh/authorized_keys`未被注释(这是公钥存储路径)。 - 确保`RSAAuthentication yes`(对于RSA密钥)未被注释。 - 保存文件并退出编辑器。 3. **重启SSH服务(在远程服务器上执行)** 使配置生效: ```bash sudo systemctl restart sshd # 对于systemd系统(如Ubuntu/CentOS) # 或 sudo service ssh restart # 对于旧版init系统 ``` 4. **将公钥复制到服务器(在本地客户端执行)** 使用`ssh-copy-id`工具自动上传公钥: ```bash ssh-copy-id user@remote_server_ip # 替换为您的用户名和服务器IP ``` 如果`ssh-copy-id`不可用,手动复制: ```bash cat ~/.ssh/id_rsa.pub | ssh user@remote_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys" ``` 5. **测试免密登录** 尝试从本地连接服务器: ```bash ssh user@remote_server_ip ``` - 如果成功,无需输入密码。 - 如果失败,检查服务器日志:`sudo tail -f /var/log/auth.log`(路径可能因系统而异)。 #### 注意事项 - **默认行为验证**:如果不确定`PubkeyAuthentication`注释时的默认状态,运行`sshd -T | grep pubkeyauthentication`(在服务器上)查看实际生效值。输出`pubkeyauthentication yes`表示启用。 - **安全性**:公钥认证比密码更安全,但确保`~/.ssh/authorized_keys`文件权限为`600`,防止未授权访问。 - **故障排除**: - 如果修改配置文件后仍失败,检查SELinux或防火墙设置(如`sudo setenforce 0`临时禁用SELinux测试)。 - 引用中提到,配置文件路径和选项必须正确,否则免密登录无效[^1][^2]。 #### 总结 - **当PubkeyAuthentication被注释掉时**:在大多数现代系统中,免密登录可能仍工作(默认启用),但**显式设置`PubkeyAuthentication yes`是最可靠的方法**。 - **如何实现**:通过编辑`/etc/ssh/sshd_config`取消注释该选项、重启服务,并配置公钥。这样可确保公钥认证始终可用。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值