我一直在尝试使用 ssh key ,以便能够通过使用 sudo su - username
在同一台 Linux 机器/服务器上从一个用户切换到另一个用户。
我想做的是:我在一台服务器上有多个帐户。
我想用 passwd -l username
锁定那些帐户,
并且只允许使用 SSH key 访问,通过在同一台机器上从一个用户 ssh 连接到另一个用户,例如:[user1@server]$ ssh user2@server
我通过将 user1
的公钥复制到 user2
的 authorized_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/