簡體   English   中英

SSH到遠程服務器Bash編程

[英]SSH to Remote Server Bash Programming

我編寫了一個腳本,該腳本通過執行以下“ nvidia-smi”命令SSH到遠程服務器並獲取GPU服務器的狀態,這只是腳本的描述和目的,但問題是我以“ root”身份運行此命令,可以通過另一台服務器無密碼,但用戶不能密碼,如何編寫腳本以使用戶運行腳本並獲取狀態? 當然,無需輸入密碼到遠程服務器,我可以使用任何身份驗證嗎?

這是腳本:

#!/bin/bash

HOSTS="gpuserver01\ngpuserver02"
SCRIPTS="nvidia-smi"

echo -e "which GPU server do you want to check?\n$HOSTS\n"-----------------""
echo "Please Enter Numebr of GPU Server"

read ans

#for HOSTNAME in $ans ; do

if [ $ans = '1' ]; then
HOSTNAME="gpuserver01"
ssh ${HOSTNAME} "${SCRIPTS}"
else

HOSTNAME="gpuserver02"
ssh ${HOSTNAME} "${SCRIPTS}"
fi

#done

謝謝。

您可以將腳本權限授予其他用戶以root特權運行。

運行visudo ,在下面添加;

Cmnd_Alias      CUSTOM_CMD=/path/to/script/myscript.sh
myUser1         ALL = (root) NOPASSWD:CUSTOM_CMD 

如果其他用戶具有相同group.Let說otherUsers

Cmnd_Alias      CUSTOM_CMD=/path/to/script/myscript.sh
%otherUsers         ALL = (root) NOPASSWD:CUSTOM_CMD
  1. 將普通用戶添加到遠程主機(例如gpuuser01)。
  2. 為該用戶創建SSH密鑰。 [1]然后檢查,您無需密碼即可登錄gpuuser01。
  3. 在帶有setuid標志[2]的遠程主機(例如gpuserver01)上創建新腳本,該腳本將運行nvidia-smi。
  4. 現在,您可以連接到遠程主機,並以root wihout密碼執行腳本。
  5. 重寫您的腳本(該腳本來自問題)。

[1] https://kb.iu.edu/d/aews

[2] http://www.cyberciti.biz/faq/unix-bsd-linux-setuid-file/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM