我在服务器上使用 SSHD 时遇到了一些问题。我尝试设置无密码(pub/pv 密钥)身份验证。它对我的其他服务器有效,但对这台服务器无效。SSHD 代理在“授权密钥”中添加了我的公钥,但仍要求输入密码。我尝试完全禁用密码身份验证(在 /etc/ssh/sshd_conf 中)以查看会发生什么,结果我得到了“坏公钥”。
公钥由客户端(ssh -vvv)发送:
----
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/me/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/me/.ssh/id_dsa
----
## Next key (rsa was the good one)
我检查了“sshd_config”和“.ssh”权限。现在我只想看看服务器端发生了什么。我检查了“/var/log/auth”和“/var/log/secure”,但这里没有文件。
在配置中,我配置了日志如下:
SyslogFacility AUTH
LogLevel DEBUG
如何在不使用深度网络嗅探的情况下调试我的情况? 是否可以将 Sshd 输出重定向到日志文件或 std?
谢谢
答案1
查看服务器上正在发生的事情的方式是使用以下选项启动 sshd 守护程序:
/usr/sbin/sshd -dD
这两个选项是(来自手册页):
-D 指定此选项后,sshd 将不会分离,也不会成为守护进程。这样可以轻松监控 sshd。
-d Debug mode. The server sends verbose debug output to standard error, and does not put itself in the background. The server also will not fork and will only process one connection. This option is only intended for debugging for the server. Multiple -d options increase the debugging level. Maximum is 3.
这应该足够了。过去,这取决于您的发行版。我收到 /var/log/auth.log 中的消息,但您可以通过以下方式在同一目录中搜索与 ssh 相关的消息
find /var/log -type f -exec grep -l ssh {} \;
这将输出所有包含表达式 的文件的名称ssh
。然后你必须检查它们的内容。
答案2
你写道:如何在不使用深度网络嗅探的情况下调试我的情况?是否可以将 Sshd 输出重定向到日志文件或 std?
好吧,您可以在故障排除和问题中记录下您如何创建密钥,以及如何将密钥放入远程端的 authorized_keys 中。以及权限.ssh 文件夹中私钥的权限?
我对这个问题的回答
当我尝试使用 SSH 登录时,为什么会出现错误“权限被拒绝(公钥)”
包括将 -v 输出重定向到文件的示例$ ssh -v user@ip pwd 2>a.a
以及要查找的一些内容以捕获公钥问题或不正确的用户问题。