我有一个奇怪的问题,我找不到答案。最近我从操作系统 tar 档案中恢复了一台 Linux 机器(RHEL 7.3)。采取的步骤如下:
- 创建操作系统相关的文件系统 tar 存档,存储在 NFS 中
- 创建一个新的VM,从Cent OS DVD启动
- 对磁盘进行分区并相应地创建文件系统
- 挂载 NFS,解压相关文件系统
- 使磁盘可启动
- 使用恢复的操作系统启动新虚拟机
- 注意网卡等小问题
- IP 未更改,因为该虚拟机位于隔离网络中
到目前为止,所有服务都没有太大问题启动。但是,当我尝试 ssh 进入此虚拟机时,它失败并显示“套接字错误:已断开连接”
我通过控制台进入虚拟机,运行“systemctl status sshd”,我惊讶地发现虽然 sshd 服务已启动,但在关键文件权限上出现错误。
Permissions 0640 for 'ssh_host_ecdsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored
bad permissions: ignore key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
...
...
我检查了 /etc/ssh 目录中文件的所有者和权限,令我惊讶的是关键文件的组与源计算机不同。
在恢复的虚拟机上,(主机名已编辑)
[root@restored ssh]# ls -al
total 292
drwxr-xr-x. 2 root root 225 Dec 16 2017 .
drwxr-xr-x. 170 root root 12288 Dec 13 09:50 ..
-rw-r--r--. 1 root root 242153 Sep 7 2016 moduli
-rw-r--r--. 1 root root 2208 Sep 7 2016 ssh_config
-rw-------. 1 root root 4361 Sep 7 2016 sshd_config
-rw-r-----. 1 root input 227 Dec 16 2017 ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Dec 16 2017 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root input 387 Dec 16 2017 ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 Dec 16 2017 ssh_host_ed25519_key.pub
-rw-r-----. 1 root input 1675 Dec 16 2017 ssh_host_rsa_key
-rw-r--r--. 1 root root 382 Dec 16 2017 ssh_host_rsa_key.pub
在原始计算机上(已编辑主机名)
[root@original ssh]# ls -al
total 292
drwxr-xr-x. 2 root root 225 Dec 16 2017 .
drwxr-xr-x. 170 root root 12288 Dec 13 09:50 ..
-rw-r--r--. 1 root root 242153 Sep 7 2016 moduli
-rw-r--r--. 1 root root 2208 Sep 7 2016 ssh_config
-rw-------. 1 root root 4361 Sep 7 2016 sshd_config
-rw-r-----. 1 root ssh_keys 227 Dec 16 2017 ssh_host_ecdsa_key
-rw-r--r--. 1 root root 162 Dec 16 2017 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys 387 Dec 16 2017 ssh_host_ed25519_key
-rw-r--r--. 1 root root 82 Dec 16 2017 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys 1675 Dec 16 2017 ssh_host_rsa_key
-rw-r--r--. 1 root root 382 Dec 16 2017 ssh_host_rsa_key.pub
在两台机器上,/etc/group 都有以下内容。
[root@original ssh]# grep ssh_keys /etc/group
ssh_keys:x:999:
[root@original ssh]# grep input /etc/group
input:x:997:
我更改了关键文件的组并重新启动了 sshd,问题就解决了。
然而,这让我对整个修复过程感到不舒服。这些是我的问题
- 为什么看似简单的 tar/untar 过程会改变文件的 GID?
- 如果是这样,我们如何知道哪些文件被更改以及有多少文件被更改?
非常感谢您提供的所有宝贵答案。
谢谢,
邦斯夫