无密码身份验证不起作用

无密码身份验证不起作用

我正在尝试使用以下步骤在我的网络服务器和报告服务器之间设置无密码身份验证。它在我的开发环境中运行良好,但在客户环境中却不行。


脚步 :

以 Web 服务器上的 testUser 用户身份执行:

mkdir ~/.ssh

cd ~/.ssh

ssh-keygen (use default file location and empty passphrase)

ssh-keygen -t dsa (as before)

将生成的公钥传输到报告服务器。

作为 testUser 用户 -

sftp testUser@<ReportServerName>

put id_dsa.pub

put id_rsa.pub

quit

在报告服务器上执行以下步骤。

作为 testUser 用户

mkdir ~/.ssh

cd ~/.ssh

cat ~/id_rsa.pub >> authorized_keys

cat ~/id_dsa.pub >> authorized_keys2

rm ~/id_*.pub

chmod 644 auth*

以 root 用户身份 vi /etc/ssh/sshd_config

取消注释“PubkeyAuthentication yes”

/etc/init.d/sshd restart

完成这些步骤后,当我尝试 sftp testUser@ 时,它仍然要求我输入密码。

有人可以帮忙吗?

答案1

这里可能存在多个陷阱。由于您自己创建了目录,因此权限可能不正确。

以下权限是必需的

  • ~/.ssh目录不应由除所有者之外的任何人读取,因此通常chmod 700。它一定不可写除所有者之外的任何人。
  • 私钥文件一定不可读或可写由除所有者以外的任何人执行,因此通常chmod 600.ssh-keygen已经为您完成了该操作。
  • 文件~/.ssh/authorized_keys一定不可写除所有者之外的任何人都可以访问,因此至少chmod 644。(根据定义,公钥不是秘密!)

如果有疑问:sshd以调试模式运行。它将保持连接到终端:

sudo /usr/bin/sshd -p 2222 -d

然后,从您的客户端连接端口 2222:

ssh -p 2222 my-ssh-server

服务器将记录遇到的任何错误。可能如下所示:

身份验证被拒绝:目录 /home/fuzz/.ssh 的所有权或模式错误

答案2

有多个调试步骤:

  • 检查两边的日志。很有可能/var/log/auth.log
  • 以详细模式运行您的 ssh 连接ssh -v
  • 检查从 '/' 到每个目录的访问权限~/.ssh。这些目录均不可写。

您可以使用这两行测试访问。(假设 root 权限正常)。

cd ~/.ssh; DIR=$PWD
while [ $DIR != '/' ]; do ls -ld $DIR; DIR=$(dirname $DIR); done

相关内容