我如何以没有密码的方式以普通用户身份登录?

我如何以没有密码的方式以普通用户身份登录?

我想知道是否有人可以帮助我完成我的脚本。

我有 2 台服务器。我们称它们为服务器 A 和服务器 B。服务器 B 上安装了一个软件,我想从服务器 A 运行它。我无法在服务器 A 上安装该软件。

我必须让用户在服务器 A 中运行另一个软件,然后该软件将调用脚本来调用服务器 B 中的软件来运行命令。

因此我在服务器 A 和服务器 B 上创建了一个名为 transfer 的用户。我允许 transfer 能够使用身份验证密钥通过 ssh 进入服务器 B,而无需输入密码。

因此现在我尝试从服务器 A 以 su 形式传输,通过 ssh 进入服务器 B 并运行命令。

以 root 身份运行完全没问题。但是,当我以自己或其他用户身份使用时,系统会要求我输入服务器 B 上“转移”用户的密码。

命令序列如下:

 #!/bin/bash
 su transfer -c 'ssh transfer@ServerB script $1 $2' 

答案1

创建执行远程命令的 shell 脚本:

% cat > /home/transfer/exec-remote-sw <<EOF
#!/bin/bash
ssh transfer@ServerB script $1 $2
EOF
% chmod 755 /home/transfer/exec-remote-sw

以用户身份运行该脚本来测试transfer

% /home/transfer/exec-remote-sw  arg1  arg2

现在以 root 身份创建一个 Linux 组(例如transfer),然后将需要访问此功能的所有用户添加到 Unix 组中:

% groupadd transfer
% usermod -a -G transfer login1
% usermod -a -G transfer login2
...
% usermod -a -G transfer loginN

/etc/sudoers以 root身份运行,将以下内容附加到文件中visudo

%transfer   serverA = (transfer) NOPASSWD: /home/transfer/exec-remote-sw

通过以传输组中的用户身份登录并运行以下命令进行测试:

% sudo -u transfer /home/transfer/exec-remote-sw  arg1  arg2

为了为您的用户简化这一操作,请让他们将以下内容添加到他们的 .profile 文件中(或将其添加到每个人的 /etc/profile 中):

alias svrbexec="sudo -u transfer /home/transfer/exec-remote-sw"

然后用户可以输入:

% svrbexec  arg1  arg2

并且远程进程应该使用传递的两个参数来执行。

相关内容