13

我一直在尝试使用 ssh 密钥,以便能够通过使用sudo su - username.

我想要做的是:我在一台服务器上有多个帐户。我想passwd -l username用 ssh 锁定这些帐户,并只允许使用 SSH 密钥访问,方法是在同一台机器上从一个用户到另一个用户,例如: [user1@server]$ ssh user2@server

我通过将公钥复制user1authorized_keys文件中来做到这一点user2,它工作正常。

但我还想做的另一件事是能够通过使用 ssh 密钥sudo su - user2user1,这样我就可以避免密码提示。

例如,[user1@server]$ sudo su - user2

我修改了 sshd_config 文件,并取消注释字段:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no

但我仍然无法做到。

我还尝试了我在互联网上找到的关于代理转发的内容,但没有。

任何人都可以帮助我如何做到这一点或指出我正确的方向吗?

4

3 回答 3

3

要让 sudo 对另一个用户无密码地工作,这些是所需的更改(以超级用户访问权限执行它们):

编辑 /etc/sudoers

visudo

配置更改

# Allow user to sudo su as anyone without password
user    ALL=(ALL)       NOPASSWD: ALL
%group  ALL=(ALL)       NOPASSWD: ALL

# Allow user to become another user
user    ALL=(user2)    NOPASSWD: ALL
%group  ALL=(user2)    NOPASSWD: ALL

现在使用后者 sudo su - user2 应该可以工作

唯一的绊脚石是将用户添加到 sudo 组

usermod -a -G sudo user

配置中的上述示例首先显示用户,然后按组显示 - 您只需要两者中的 1 个 -

编辑:

visudo

%group2    ALL=(ALL:ALL)    PASSWD: ALL
%group1    ALL=(ALL:ALL)    NOPASSWD: ALL

添加运行组

groupadd group1
groupadd group2

所以对于需要密码的用户

usermod -a -G group2 user1
usermod -a -G group2 user2
etc..

对于不需要密码的用户:

usermod -a -G group nuser1
usermod -a -G group nuser2
etc
于 2013-06-12T10:07:14.470 回答
3

sudosshd与SSH和配置无关。

你真正想要的是一个使用 SSH 公钥的 PAM 模块。我不确定您的原因是什么,因为整个想法似乎有点奇怪,但是,好吧。pam_ssh是执行此操作的模块。

于 2013-06-12T09:35:30.907 回答
2

在某些情况下(例如,您没有 root 权限)您可以使用类似

ssh-copy-id -i ~/.ssh/id_rsa.pub user2@localhost

然后登录

ssh user2@localhost
于 2021-04-10T04:14:12.567 回答