SSH的基本配置

SSH的基本配置

对于 SSH 的最基本配置,我通常执行以下操作:

nano /etc/ssh/sshd_config && service ssh restart # Genral basic configuration like disabling all root logins;
nano ~/.ssh/authorized_keys && service ssh restart # Put your public keys inside;
chmod ~/.ssh 700
chmod ~/.ssh/authorized_keys 600
ssh USER@IP -vvv -L 22:localhost:22 # or [email protected] # Tunnel via SSH with verbose debugging

我想知道我是否应该chmod ~/.ssh 700 -R这样做。

我在聊天中询问了这个问题,terdon 回答说:

我希望 chmod ~/.ssh 700 -R 能够破坏 ssh,因为您刚刚从配置中删除了读取访问权限

由于700,与所有者位于同一组的用户和所有其他非 root 用户实际上将无法读取 SSH 数据。

只要拥有者有阅读权就有问题吗?

答案1

我希望 chmod ~/.ssh 700 -R 能够破坏 ssh,因为您刚刚从配置中删除了读取访问权限

呃,不?

-bash-4.2$ chmod -R 700 .ssh
-bash-4.2$ logout
...
% ssh somelinooxbox
...
-bash-4.2$ ls -l .ssh/authorized_keys
-rwx------ 1 jhqdoe xxxxxx 178 Aug 10  2018 .ssh/authorized_keys
-bash-4.2$ 

所以对于非用户来说这对于 Centos7 测试主机来说并不是真正的问题rootroot也可以chmod -R 700 ~/.ssh)。

一个相关的问题是“进程sshd以什么用户身份运行”,人们可能会猜测是root或用户。root通常可以读取所有文件(NFS 或加密主目录有各种例外),并且用户读取标记为它们的文件应该没有问题rwx。我们不需要猜测:

% ssh -o ControlMaster=no somelinooxbox
...
-bash-4.2$ sudo sysdig -p %user.uid fd.name = ~/.ssh/authorized_keys

然后在别处建立新的联系;显示sysdig的进程读取~/.ssh/authorized_keys为正在连接的用户运行,即使在chmod -R 700 ...运行后该用户也具有足够的权限。

诚然,添加杂散+x位充其量是不必要的,更糟糕​​的是可能会产生一些实际上不应该的可执行文件,因此请参阅该X技巧的其他答案,或者以其他方式确保目录获得 0700 和文件 0600。

(selinux 或 apparmour 等软件可能会带来一些麻烦,但这只是一个额外的问题罐头蜜蜂在通常的权限之上。)

答案2

符号模式怎么样。大多数现代的chmod(但不是全部)都能做到这一点。

chmod -R go=,u=rwX ~/.ssh

这将仅授予对目录的执行权限,删除对组和其他人的权限,并授予您完整的权限。

相关内容