繁体   English   中英

使用SSH密钥切换用户“sudo su - username”

[英]Switch user with “sudo su - username” using SSH keys

我一直在尝试使用ssh密钥,以便能够通过使用sudo su - username在同一个Linux机器/服务器上从一个用户切换到另一个用户。

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

我这样做是通过将user1公钥复制到user2authorized_keys文件,它工作正常。

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

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

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

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no

但我仍然无法做到这一点。

我也试过我在互联网上发现的有关代理转发的内容,但没有。

谁能帮助我如何做到这一点或指向正确的方向?

sudo与SSH和sshd配置无关。

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

要让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

配置中的上述示例首先按组显示用户 - 您只需要两个中的一个 -

编辑:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM