Bash

腳本 ssh 登錄到伺服器並傳遞 root 密碼

  • June 7, 2016

我編寫了一個期望腳本來自動化 ssh 的登錄過程。我的使用者帳戶設置了 rsa 密鑰,但是一旦我登錄,我想切換到 root,但遠端伺服器掛在密碼上。我可以看到將密碼提供給遠端伺服器的腳本,儘管它是可見的,這是我想知道是否可以隱藏的另一件事。但是有人可以告訴我為什麼這是掛起的嗎?

#!/usr/bin/expect

spawn ssh <server> su - 
expect "Password"
send "MyPassword\r"
interact

它就在這個螢幕上:

Password: "password"

游標正下方不斷閃爍。在 /var/log/secure 中,我將腳本登錄嘗試的行與我手動獲取 root 的正常行進行了比較。

腳本蘇:

Jun  7 15:17:50 <server> su: pam_unix(su-l:session): session opened for user root by (uid=1000)

手冊您的:

Jun  7 15:18:48 <server> su: pam_unix(su-l:session): session opened for user root by <user>(uid=1000)

唯一不同的是,手動登錄列出了我的使用者名。

我嘗試將命令更改為:

spawn ssh <server> su - root
spawn ssh <server> sudo su

但沒有一個工作。我怎樣才能做到這一點?

在腳本中,我必須將 -t 標誌傳遞給它以強制分配 tty:

spawn ssh -t <server> su -

它現在按預期工作。

引用自:https://unix.stackexchange.com/questions/288259