目标是设置 FreeNX。根据另一个serverfault 用户的建议,我能够测试 sshd 服务器的各种配置ssh
和nxsetup
连接作为守护进程或手动启动的/usr/sbin/sshd
.
守护程序版本将不接受来自 nxsetup 的连接,但手动实例/usr/sbin/sshd
将接受。
步骤:
启动 ssh-agent
eval $(ssh-agent)
并添加 root 密钥ssh-add
停止 sshd 守护进程,
使用以下命令启动手动实例:
# /usr/sbin/sshd -d -p 22 -f /path/to/test/sshd_config_nx
我遇到问题的命令是:
# nxsetup --install --clean --purge
成功!但是,跳过 2、3 和连接失败
sshd 守护进程和手册 /usr/sbin/sshd 配置文件的设置:
/etc/ssh/sshd_config
当然是守护进程的默认配置目录。这个文件和我的测试配置,,~/sshd_config_nx
(已经成为)完全相同(差异)。
成功的 ssh 测试包括:
from client over LAN to:
- sshd server daemon
- manual sshd server
from ssh with loopback (127.0.0.1) to:
- sshd server daemon
- manual sshd server
权限
我阅读了很多关于涉及权限的 ssh/sshd 身份验证问题的帖子。我的 root 用户具有以下权限:/root/.ssh
是 700 和/root/.ssh/*
600。authorized_keys2 的 nxserver 默认位置是/var/lib/nxserver/home/.ssh/
. 我在这里应用了相同的权限。/root 和 /var 之间的唯一区别是后者拥有 nx:root。出于这个原因,我为所有者和组测试了相同的权限,世界仍然为 0。这没有任何区别,并且它对 ssh-add 进行了窃听。所以我将它们改回 700 和 600。我没有听说配置权限很重要,但我使它们都相同,因为我以 root 身份执行这些命令,所以 user:group 也是相同的。
为什么 sshd 守护进程会导致手动启动 /usr/sbin/sshd 允许的连接失败?
//编辑:如果我只是愚蠢的,我已经尝试了更多的东西:
分步添加 ssh-agent。
我确保我对我所做的任何更改
~/.ssh
和/var/lib/nxserver/home/.ssh
权限都遵循了另一个帖子的建议,该帖子与守护进程有类似问题并手动启动了 sshd:#restorecon -r -vv /root/.ssh
服务器有 openssh-5.3p1-84.1.el6.i686,因此authorized_key 文件不是您所期望的。FreeNX 希望 authorized_keys2 位于 /var 目录中。重要的是要注意 ssh 正在工作。测试 sshd_config_nx 始终使用此 /var 位置,当我尝试通过守护程序进行 nxsetup 连接时,我切换 /etc/ssh/sshd_config 中的行(以适应 nxsetup 指令)。
上面提到的目录:
[root@mrwizard ~]# ls ~/.ssh drwx------. 2 root root 4096 Oct 6 17:47 . dr-xr-x---. 47 root root 4096 Oct 7 18:58 .. -rw-------. 1 root root 2761 Oct 5 18:50 authorized_keys -rw-------. 1 root root 1865 Oct 6 15:54 authorized_keys2 -rw-------. 1 root root 1679 Oct 6 15:52 authorized_keys2.new -rw-------. 1 root root 1743 Oct 5 18:38 id_rsa -rw-------. 1 root root 401 Oct 5 18:38 id_rsa.pub -rw-------. 1 root root 391 Oct 6 17:47 known_hosts [root@mrwizard ~]# ls -al /var/lib/nxserver/home/.ssh/ drwx------. 2 nx root 4096 Oct 7 18:38 . drwx------. 5 nx root 4096 Oct 7 18:38 .. -rw-------. 1 nx root 669 Oct 7 18:38 authorized_keys2 -rw-------. 1 nx root 668 Oct 7 18:38 client.id_dsa.key -rw-r--r--. 1 nx root 392 Oct 7 18:38 known_hosts [root@mrwizard ~]# ls -al /etc/ssh/ drwxr-xr-x. 2 root root 4096 Oct 6 18:47 . drwxr-xr-x. 135 root root 12288 Oct 7 18:38 .. -rw-------. 1 root root 125811 Feb 21 2013 moduli -rw-r--r--. 1 root root 2061 Sep 22 14:32 ssh_config -rw-------. 1 root root 4492 Oct 6 18:47 sshd_config -rw-------. 1 root root 668 Oct 5 16:53 ssh_host_dsa_key -rw-r--r--. 1 root root 590 Oct 5 16:53 ssh_host_dsa_key.pub -rw-------. 1 root root 963 Oct 5 16:53 ssh_host_key -rw-r--r--. 1 root root 627 Oct 5 16:53 ssh_host_key.pub -rw-------. 1 root root 1671 Oct 5 16:53 ssh_host_rsa_key -rw-r--r--. 1 root root 382 Oct 5 16:53 ssh_host_rsa_key.pub
您已
selinux
启用。对于失败的连接,您应该看到/var/log/audit/audit.log
. 你有两个选择:selinux
. 去吧,你所有的朋友都在做。selinux
配置。这可能就像fixfiles
使用适当的参数运行以重新标记文件系统一样简单,或者可能需要显式设置selinux
文件或目录的上下文。如果您选择第二个 - 可以说更正确但更费力 - 解决方案,您可能需要打开第二个问题,其中包含您的
audit.log
.您可以通过运行尝试第一个解决方案:
这将
selinux
进入许可模式,但在重新启动后不会持久。要永久禁用selinux
,编辑/etc/selinux/config
和设置:或者:
后一个设置将
selinux
保持启用但处于许可模式,因此它将记录违规audit.log
但不会