SSH 和 NX 故障排除 我有一个使用 RSA 密钥的 SSH 连接。问题是 NX 服务器想要sshd_config 参数AuthorizedKeysFile
设置为 NX 安装文件/var/lib/nxserver/home/.ssh/authorized_keys2
。一旦我进行了此更改,SSH 远程连接就无法获得授权。我试过,
- 将主 authorized_keys 附加
~/.ssh
到此 /var... 文件。 - 其所有者为
nx
,组为,权限为 644,因此我在 的末尾root
添加了参数AllowUsers
和两个账户。AllowGroups
sshd_config
- 每次 sshd 更改后重新启动 SSHD 服务器。
不幸的是,ssh 不允许这种连接。
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
如果我改sshd_config
AuthorizedKeysFile
回原始设置,那么一切都会好起来。那么,sshd 不接受 NX 想要的授权密钥文件的原因是什么?
这里有一些令人困惑的问题。例如,authorized_keys2 是折旧? 不是那个这些人关心,因为他们在第一篇文章发表两年后才讨论使用authorized_keys2进行NX。
许多 NX 用户注意到 AuthorizedKeysFile 只是文件名,但这个手册页sshd_配置(与 CentOS6 相同)并说“在 [token] 扩展之后,AuthorizedKeysFile 被视为绝对路径或相对于用户主目录的路径。” NX 路径应该没问题,对吗?
不幸的是,我的 CentOS 服务器使用的是 OpenSSH 5.3,因为 6.2(在我的客户端上)支持空格分隔列表AuthorizedKeysFile 的。
答案1
首先,在这种情况下,我总是尝试通过启动自定义的 undaemonized 来最大化我的日志sshd
:
sshd -d -p 11122 -f /new/config/file
并尝试连接它:
ssh -v -p 11122 this.host
这可以确保您当前的配置安全,并为您提供有关如何建立连接的所有信息。
现在来猜测一下,sshd
将需要密钥文件:
- 服务器可访问并读取。
- 仅用户可写。这意味着所有文件夹(/var、/var/lib 等等)不应可写除 、 和 登录用户之外的任何用户或
root
组wheel
。
答案2
这是一个 F'd 问题,因为在使用 Kworr 的提示sshd
通过停止守护进程服务并在调试模式下手动启动它进行测试后,非主路径可以正常工作(这是您在“令牌扩展”之后所期望的)抱歉,大家好。
因此,回答我自己的问题:不,没有任何理由authorized_keys不能在家庭之外。
答案3
默认是使用用户主目录中的文件(见下文)。 %h 可以明确用于显示这一点。 这里显示了一个列表,每个路径都用空格分隔...
我会尝试将权限更改为 600。这就是我在所有帐户中将 autorized_keys 文件设置为的值。错误的权限将转换为权限被拒绝错误。这让您有机会在修复权限之前验证您的 authorized_keys 文件不包含不需要的添加内容。
如果希望不同的用户使用相同的authorized_keys,那么就会遇到问题......
AuthorizedKeysFile
Specifies the file that contains the public keys that can be used for user authentication. The format is described in the AUTHORIZED_KEYS FILE
FORMAT section of sshd(8). AuthorizedKeysFile may contain tokens of the form %T which are substituted during connection setup. The following
tokens are defined: %% is replaced by a literal '%', %h is replaced by the home directory of the user being authenticated, and %u is replaced by
the username of that user. After expansion, AuthorizedKeysFile is taken to be an absolute path or one relative to the user's home directory.
Multiple files may be listed, separated by whitespace. The default is “.ssh/authorized_keys .ssh/authorized_keys2”.