我一直在尝试使用ssh密钥,以便能够使用sudo su - username
在同一个Linux机器/服务器上从一个用户切换到另一个用户。
我想要做的是:我在一台服务器上有多个帐户。
我想用passwd -l username
锁定这些帐户,
并且只允许使用SSH密钥进行访问,方法是在同一台机器上从一个用户转到另一个用户,例如:[user1@server]$ ssh user2@server
我是通过将user1
的公钥复制到authorized_keys
的{{1}}文件来完成此操作的,并且工作正常。
但我还想做的另一件事是,能够user2
来自sudo su - user2
,使用ssh键,这样我就可以避免密码提示了。
例如,user1
我修改了sshd_config文件,并取消注释字段:
[user1@server]$ sudo su - user2
但我仍然无法做到。
我也尝试过在互联网上发现的关于代理转发的内容,但没有。
任何人都可以帮我解决这个问题或者指出正确的方向吗?
答案 0 :(得分:4)
sudo
与SSH和sshd
配置无关。
你真正想要的是一个使用SSH公钥的PAM模块。我不确定你的理由是什么,因为整个想法看起来有点奇怪,但是,好吧。 pam_ssh
是执行此操作的模块。
答案 1 :(得分:4)
要让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
答案 2 :(得分:1)
在某些情况下(例如您没有 root 权限),您可以使用类似的东西
ssh-copy-id -i ~/.ssh/id_rsa.pub user2@localhost
然后登录
ssh user2@localhost