為什麼 sshd 守護程序會導致手動啟動 /usr/sbin/sshd 允許的連接失敗?
目標是設置 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 指令)。
- 添加了/etc/ssh/sshd_config的 pastebin
- 上面提到的目錄:
[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
.您可以通過執行嘗試第一個解決方案:
# setenforce 0
這將
selinux
進入許可模式,但在重新啟動後不會持久。要永久禁用selinux
,編輯/etc/selinux/config
和設置:SELINUX=disabled
或者:
SELINUX=permissive
後一個設置將
selinux
保持啟用但處於許可模式,因此它將記錄違規audit.log
但不會