SSH 到任意用户

SSH 到任意用户

我正在开发一个项目,在容器中运行一些独立的应用程序。我想让某些人通过 SSH 访问特定容器。到目前为止,我已经能够通过添加以下内容来使其工作/etc/ssh/sshd_config

Match User tester
    ForceCommand docker exec -it mycontainer /bin/sh
    AuthorizedKeysFile /opt/tester_keys

只要用户tester存在于主机操作系统上并且具有执行权限,此操作就有效docker exec。如果我Match User在主机操作系统上输入一个不存在的用户的条目,那么它不起作用:

Match User nottester
    ForceCommand docker exec -it nottestercontainer /bin/sh
    AuthorizedKeysFile /opt/nottester_keys

在我得到的日志中Invalid user nottester from xxx.xxx.xxx.xxx port 35703

有没有办法sshd仅使用授权密钥进行身份验证?

主机操作系统是 Ubuntu 22.04 LTS 服务器

最后我更喜欢以下内容:

  1. 用户连接nottester到服务器
  2. 使用提供的验证访问AuthorizedKeysFile
  3. 如果授予访问权限,则将以有权执行此操作的ForceCommand用户身份执行container_admin

这可以完成sshd还是我需要其他东西来处理这个问题?

答案1

ssh 服务需要系统已知的用户帐户以进行身份​​验证。这是没有商量余地的:目标账户必须存在于远程系统上。在您的示例中,这是nottester.

现在让我们再看看您的要求:

  1. 用户作为 nottester 连接到服务器
  2. 使用提供的 AuthorizedKeysFile 验证访问权限
  3. 如果授予访问权限,ForceCommand将以用户container_admin身份执行

在客户端,指定nottester要连接的用户帐户:

ssh nottester@remoteserver ...

或者将其添加到客户端~/.ssh/ssh_config配置/首选项文件中:

Host remoteserver
    User notttester
    IdentityFile my_privatekey_for_remoteserver_ed25519.key

这样您就不需要记住用户帐户:

ssh remoteserver

在服务器端,您似乎已经将其设置为允许来自此用户帐户的连接并强制执行命令。

相关内容