为什么 sshd 守护进程会导致手动启动 /usr/sbin/sshd 允许的连接失败?

为什么 sshd 守护进程会导致手动启动 /usr/sbin/sshd 允许的连接失败?

目标是设置 FreeNX。按照另一个人的建议serverfault 用户我能够测试sshd 服务器作为守护进程或手动启动的实例的各种配置ssh和连接。 nxsetup/usr/sbin/sshd

守护进程版本将不会接受来自 nxsetup 的连接,但手动实例/usr/sbin/sshd会接受。

步骤:

  1. 启动 ssh-agenteval $(ssh-agent)并添加根密钥ssh-add

  2. 停止 sshd 守护进程,

  3. 使用以下命令启动手动实例:

    # /usr/sbin/sshd -d -p 22 -f /path/to/test/sshd_config_nx
    
  4. 我遇到问题的命令是:

    # nxsetup --install --clean --purge
    
  5. 成功!但是,跳过 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 所有。出于这个原因,我测试了所有者和组的权限相同,world 仍然是 0。这没有任何区别,而且它使 ssh-add 出现问题。所以我将它们改回 700 和 600。我没有听说配置权限很重要,但我将它们设置为相同,并且由于我以 root 身份执行这些命令,因此 user:grooup 也相同。

为什么 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 说明)。

  • 添加 pastebin/etc/ssh/sshd_config

  • 上面提到的目录:

    [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
    

答案1

您已selinux启用。对于失败的连接,您应该在 中看到条目/var/log/audit/audit.log。您有两个选择:

  • 禁用selinux。继续吧,你所有的朋友都在这么做。
  • 修复您的selinux配置。这可能很简单,只需fixfiles使用适当的参数运行即可重新标记您的文件系统,或者可能需要明确设置selinux文件或目录的上下文。

如果您选择第二种解决方案(可能更正确,但更费力),您可能需要打开第二个问题,其中包含来自您的相关条目audit.log

您可以通过运行以下命令尝试第一个解决方案:

# setenforce 0

这将进入selinux宽容模式,但重启后不会持久。要永久禁用selinux,请编辑/etc/selinux/config并设置:

SELINUX=disabled

或者:

SELINUX=permissive

后一种设置将保持selinux启用状态,但处于宽容模式,因此它将记录违规行为,audit.log但不会

相关内容