ssh许多用户到一个家

我想允许一些信任的用户scp文件到我的服务器(到一个特定的用户),但我不想给这些用户一个家,既不sshlogin。

我有问题要了解我必须创build的用户/组的正确设置才能实现。

我会举一个例子。

有:

  1. MyUser@MyServer
  2. MyUser属于组MyGroup
  3. MyUser的家可以说, /home/MyUser
  4. SFTPGuy1@OtherBox1
  5. 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只是不断要求我input密码。

有人能指出我错过了什么吗?

非常感谢,

F。

[ 编辑 :在StackOverflow的Messa问我,如果authorized_keys文件是可读的其他用户(MyGroup的成员)。 有趣的是,这是我的答案:

那么,它不是(它是700),但后来我将.ssh目录和auth文件的权限更改为750,但仍然没有效果。 猜猜值得一提的是我的家庭目录( /home/MyUser )对于这个组也是可读的。 大多数dir是750,他们放置文件的特定文件夹是770。

然而,关于auth文件,我认为authentication将由MyServer上的本地用户执行,不是吗? 如果是这样,我不明白需要其他用户阅读…好吧..只是想知道。 ]

在尝试这个之前请仔细阅读下面的内容。

你可以通过创build2个用户将他们放在同一个组中,并给他们相同的主目录来做你想做的事情。 然后在共享的家中使用键创build〜/ .ssh / authorized_keys文件。

帐户必须有一个shell,所以使用usermod -L LOGIN来locking它们,这将阻止交互式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

为了使这个scheme工作,你现在必须通过编辑/etc/sshd_config破坏sshd的内置检查 ,并且从默认的StrictModes yes设置StrictModes no 。 重新启动sshd以进行更改。

它应该如你所愿地工作。 不幸的是,您已经将sshd的安全closures了,并可能会在以后的日子进行更改,使系统处于开放状态。

要更安全地做到这一点,请不要进行上述任何更改

在同一组中创build两个用户帐户,并设置他们的〜/ .ssh / authorised_keys创build一个从每个主目录到你希望他们放置东西的地方的链接。

 ln -s -n /path/to/stuff content 

locking主目录上的权限以防止用户写入。

停止交互式login帐户

 usermod -L LOGIN 

更改/ path / to / stuff的权限以允许组访问。

看起来你想提供一个用作文件保pipe箱的用户标识。 您可以限制用户在授权密钥文件中可以执行的操作。

由于您只希望它们连接到服务器上的此用户标识,因此可以为它们提供一个.ssh / config文件,将其直接映射到正确的用户标识。

这个问题的答案 – 如何创build一个只允许通过sftp上传的用户帐户? – 推荐一个叫做scponly的软件包 – 我从来没有用过,但是听起来好像它可以做你想做的。

你可能会遇到sshd(也就是sftp)不喜欢authorized_keys文件权限的问题。

你也许可以用sshd来取消设置“StrictModes” – 但我现在还不确定这个设置的其他含义是什么…

在openssh FAQ中引用问题3.14

通常这是由$ HOME上的文件权限引起的,$ HOME / .ssh或$ HOME / .ssh / authorized_keys比sshd默认允许的更宽容。

在这种情况下,可以通过在服务器上执行以下来解决。

$ chmod go-w $ HOME $ HOME / .ssh $ chmod 600 $ HOME / .ssh / authorized_keys $ chown whoami $ HOME / .ssh / authorized_keys

如果由于某种原因无法执行此操作,则可以select在sshd_config中设置StrictModes否,但不build议这样做。

希望有所帮助。

检查日志文件可能会有帮助。 请在“失败”login后input以下内容

 tail -n 50 /var/log/secure 

并发布输出

这可能是一个select吗? 我不确定我是否完全理解你的问题,但是我非常肯定,如果你的用户有/ bin / false shell你不能SFTP。

我认为最直接的路线是给予每个用户一个账户,但是用rssh (restricted)shell而不是像bashksh这样的普通shell来设置它。 这是一个与OpenSSH一起使用的伪shell,仅用于执行像scpsftp这样的操作。 您可以阅读手册页以获得完整说明。 然后,你可以设置目标系统,组和任何“拖放”目录被locking为你想要的(例如“一次性”组,chroot监狱等)。

只是浏览内容,似乎一个解决scheme是为每个特定的上下文生成和分发密钥。 在目标主机上,您可以限制每个密钥在authorized_keys文件中可以执行的操作,包括命令。 这可以在sshd_config的手册页中find。

它提供的例子是:(关于格式化的抱歉)

示例authorized_keys文件:

  # Comments allowed at start of line ssh-rsa AAAAB3Nza...LiPk== [email protected] from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== [email protected] command="dump /home",no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-dss AAAAB5...21S== tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== [email protected] 

我不认为有一个直接的简单的方法来做到这一点,因为严格的权限,sshd强制执行,但它会工作,使用SSH指针设置所有指向同一个地方? 这也将阻止他们真的能够与系统交互,如果他们ssh而不是scp / sftp。