之路 on it Road.com

故障排除

检查正确的权限

使基于密钥的 ssh 身份验证工作出现问题的最常见原因是远程 ssh 服务器上的文件权限
如果执行了上述步骤并且通过 ssh 连接到适当的用户仍然提示输入密码,请检查本地和远程用户文件的权限。
目录的权限应完全如下所示。
此处显示的示例适用于用户“oracle”

drwx------. 25 oracle oinstall 4096 Aug 21 11:01 /home/oracle/
drwx------.  2 oracle oinstall 4096 Aug 17 13:13 /home/oracle/.ssh
-rw-------.  1 oracle oinstall  420 Aug 17 13:13 /home/oracle/.ssh/authorized_keys

如果权限与上面显示的不同,请正确设置它们:

# chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh/

重新启动 sshd 服务以使更改生效:

# service sshd restart
如何在 Linux 中设置 SSH 无密码登录

以下是关于在 2 个 Linux 系统之间配置无密码登录的简短说明。
过程基本上涉及生成公共身份验证密钥并将其添加到远程主机的 ~/.ssh/authorized_keys 文件。

禁用 SElinux

SELinux 还可以潜在地阻止 sshd 访问服务器上的 ~/.ssh 目录。
这个问题可以通过在远程用户的 ~/.ssh 目录上运行 restorecon 来排除(或者解决):

# restorecon -Rv ~/.ssh

生成认证密钥

如果SSH authentication-key文件不存在,通过ssh-keygen命令生成一个。
当提示输入密码时,如果需要完全无密码登录,请使用空白密码:

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
1e:b2:f4:89:5a:7f:2d:a5:a5:4d:6d:66:2c:82:d8:18 root@remote-host

将公钥复制到远程主机

使用 ssh-copy-id 命令将新生成的认证密钥的公共部分安装到远程主机上特定用户的主目录中。
然后 ssh-copy-id 命令会自动将身份信息添加到远程主机上指定用户的 ~/.ssh/authorized_keys 文件中(如有必要,创建 ~/.ssh 和 ~/.ssh/authorized_keys)。

# ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-host
user@remote-hosts's password:

或者,如果服务器未安装 openssh-clients(一个提供 ssh-copy-id 命令实用程序的软件包),我们可以使用以下命令复制身份验证密钥:

# cat ~/.ssh/id_rsa.pub | ssh user@remote-host "cat >> ~/.ssh/authorized_keys"

如果一切配置正确,我们应该能够在没有密码的情况下登录到远程主机。

日期:2020-09-17 00:12:19 来源:oir作者:oir