linux - 使用 SSH key 使用 "sudo su - username"切换用户

标签 linux ssh ssh-keys

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

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

我通过将 user1 的公钥复制到 user2authorized_keys 文件来做到这一点,它工作正常。

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

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

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

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no

但我还是做不到。

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

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

最佳答案

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

编辑/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

关于linux - 使用 SSH key 使用 "sudo su - username"切换用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17061835/

相关文章:

docker - 如何ssh docker容器

linux - 使用 ssh 和 NAT 运行 git 服务器

linux - 写权限问题

linux - 来自 TCP 套接字的 HTTP 服务器(在 Go 中)

java - Symfony2 Assetic yuicompressor 未知错误

C语言中的CPU利用率

python - 在 Web 服务器上运行时,Paramiko SSH 失败并显示 "Server ' .. .' not found in known_hosts"

OpenSSL 无法加载公钥

linux - 验证通过 Jumpbox 登录服务器以获得应用程序支持的能力(ssh 多跳)

github - 如何为来自同一个 ssh 客户端的两个单独的 GitHub 帐户设置身份验证?