我想允许一些受信任的用户将文件 scp 到我的服务器(特定用户),但我不想为这些用户提供主页,也不想 ssh 登录。
我无法理解必须创建哪些用户/组才能实现这一点的正确设置。
我举个例子;
具有:
MyUser@MyServer
MyUser
属于该组MyGroup
- MyUser 的主页如下:
/home/MyUser
SFTPGuy1@OtherBox1
SFTPGuy2@OtherBox2
他们给我他们id_dsa.pub
的,我把它添加到我的authorized_keys
我认为,我会在我的服务器上做类似的事情
useradd -d /home/MyUser -s /bin/false SFTPGuy1
(其他的也一样..)
最后,useradd -G MyGroup SFTPGuy1
(同样,对于另一个人来说)
我希望 SFTPGuys 能够sftp -o IdentityFile=id_dsa MyServer
被带到 MyUser 的家......
嗯,事实并非如此... SFTP 只是不断要求我输入密码。
有人能指出我遗漏了什么吗?
非常感谢,
F。
[编辑:梅萨StackOverflow 中有人问我,authorized_keys 文件是否可供其他用户(MyGroup 成员)读取。这是一个有趣的观点,这是我的回答:
嗯,不是(是 700),但后来我将 .ssh 目录和 auth 文件的权限更改为 750,但仍然没有效果。我想值得一提的是,我的主目录 ( /home/MyUser
) 对于该组也是可读的;大多数目录是 750,而他们放置文件的特定文件夹是 770。
不过,关于 auth 文件,我认为身份验证将由本地用户执行MyServer
,不是吗?如果是这样,我不明白其他用户为什么要阅读它……好吧..只是想知道。]
答案1
在尝试之前请先读至最后。
你可以通过创建 2 个用户将他们放在同一个组中并为他们提供相同的主目录来执行你想要的操作。然后在共享主目录中创建包含密钥的 ~/.ssh/authorized_keys 文件。
账户必须有一个 shell,因此使用 shell 锁定它们usermod -L LOGIN
将阻止交互式登录。
~/.ssh 目录的权限需要为 g:rx,而 ~/.ssh/authorized_keys 需要为 g:r--
chmod g+rx ~/.ssh
chmod g+r ~/.ssh/authorized_keys
这会导致 sshd 出现问题,因为它认为目录最多为 g:r--,文件最多为 g:---,因此您会收到错误消息
Authentication refused: bad ownership or modes for file /home/test/.ssh/authorized_keys
为了使这个方案奏效,你现在必须破坏 sshd 的内置检查通过编辑
/etc/sshd_config
和设置StrictModes no
默认值StrictModes yes
。重新启动 sshd 以使更改生效。
它应该可以按你希望的方式工作。不幸的是,你已经取消了 sshd 的安全性,并且以后可能会进行更改,从而使你的系统处于完全开放状态。
为了更安全地执行此操作,请不要进行上述任何更改
在同一组中创建 2 个用户帐户并设置他们的 ~/.ssh/authorised_keys 从每个主目录创建一个到您希望他们放置东西的位置的链接。
ln -s -n /path/to/stuff content
锁定主目录的权限以防止用户对其进行写入。
停止帐户以交互方式登录
usermod -L LOGIN
更改 /path/to/stuff 的权限以允许组访问。
答案2
看来您想为充当文件保管箱的用户 ID 提供访问权限。您可以在授权密钥文件中限制用户可以执行的操作。
由于您只希望他们连接到服务器上的这个用户 ID,因此您可以为他们提供一个 .ssh/config 文件,将他们直接映射到正确的用户 ID。
答案3
这个问题的答案是——如何创建仅允许通过 sftp 上传的用户帐户?- 推荐一个名为scponly- 我从来没有用过它,但听起来它可以满足你的要求。
答案4
检查日志文件可能会有所帮助。请在“不成功”登录后输入以下内容
tail -n 50 /var/log/secure
并发布输出