linux 使用SSH密钥使用“sudo su - username”切换用户[关闭]

zhte4eai  于 2023-11-17  发布在  Linux
关注(0)|答案(4)|浏览(153)

**已关闭。**此问题为not about programming or software development。目前不接受回答。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
17天前关闭。
Improve this question
我一直在尝试使用ssh键,以便能够通过使用sudo su - username在同一台Linux机器/服务器上从一个用户切换到另一个用户。
我想做的是:我在一台服务器上有多个帐户。我想用passwd -l username锁定这些帐户,并只允许使用SSH密钥进行访问,方法是在同一台机器上从一个用户向另一个用户发送ssh-ing,例如:[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

字符串
但我还是做不到。
我也试过我在互联网上找到的关于代理转发,但没有。
有没有人可以帮我做这件事,或者给我指出正确的方向?

deikduxw

deikduxw1#

要让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 -user 2应该可以工作
唯一的绊脚石是要添加到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

erhoui1w

erhoui1w2#

sudo与SSH和sshd配置无关。
你真正想要的是一个使用SSH公钥的PAM模块。我不知道你的原因是什么,因为整个想法似乎有点奇怪,但是,好吧。pam_ssh是这样做的模块。

pb3s4cty

pb3s4cty3#

在某些情况下(例如,你没有root权限),你可以使用这样的东西

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

字符串
然后使用

ssh user2@localhost

eh57zj3b

eh57zj3b4#

这实际上可以简化为通过单个ssh连接使用sudo登录到一个用户。
user@host:~$ ssh email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)
...
email protected(https://stackoverflow.com/cdn-cgi/l/email-protection):~$ sudo -iu user1
其中user是本地用户,user 0是远程主机上的sudo管理员,user 1是必需用户。
要禁用user 1的密码,请执行以下操作:
email protected(https://stackoverflow.com/cdn-cgi/l/email-protection):~$ sudo passwd -l user1
我真的不建议完全禁用密码来使用sudo发出的命令。但是,如果有人觉得有必要禁用sudo用户的密码:
user@host:~$ visudo

%sudoers ALL=(ALL:ALL) NOPASSWD: ALL

字符串
这应该会以一种更“简化”的方式来处理事情。不过,看看周围的命令,比如:
user@host:~$ ssh -L 127.0.0.1:2222:127.0.0.1:22 email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)
另一个终端:
user@host:~$ ssh -p email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)
这可能是值得一看的东西。

相关问题