如何在沒有密碼的情況下以普通用戶身份蘇?

如何在沒有密碼的情況下以普通用戶身份蘇?

我想知道是否有人可以幫我編寫腳本。

我有 2 台伺服器。我們將它們稱為伺服器 A 和伺服器 B。

我必須讓使用者在伺服器 A 中執行另一個軟體,然後該軟體將呼叫一個腳本來呼叫伺服器 B 中的軟體來執行命令。

因此,我在伺服器 A 和伺服器 B 上建立了一個名為 Transfer 的使用者。

所以現在從伺服器 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

並且遠端進程應該在傳遞兩個參數的情況下執行。

相關內容