2016-06-22 67 views
1

當我使用ssh連接到另一臺服務器時,我正在使用'EOF'標記來執行遠程服務器中的某些命令。但是他們無法在遠程服務器上執行命令。ssh連接到另一臺服務器上的用戶並以該用戶身份執行shell命令

此外,當無密碼ssh連接未啓用,如何從腳本輸入密碼,而無需用戶輸入密碼?

$ su - oracle < passwd.txt 
standard in must be a tty 
+0

請添加任何錯誤消息和執行的實際命令(複製粘貼,不要重新輸入)。 – Kusalananda

+0

添加錯誤我得到,而SSH連接到另一臺服務器。 –

+0

考慮使用'sshpass'或'expect'。請參閱此[post](http://stackoverflow.com/a/27994731/1328439)。 –

回答

0

如果不啓用密碼少conectivity(假設鍵AUTH已啓用 - 更安全的..)然後機器間使用鍵.. 使用ssh-keygen生成密鑰,並使用SSH-其複製到遠程服務器copy-id

+0

我想在不啓用無密碼連接的情況下做到這一點 –

0

這樣做的好方法是爲該命令設置一個無密碼的sudo。

安裝sudo命令,如果你沒有它,然後修改sudoers文件與visudo命令文件,並添加這樣一行:

youruser ALL=(oracle) NOPASSWD: the command you want to launch 

例如

girish ALL=(oracle) NOPASSWD: /bin/stop-process 

然後,在你的腳本中,只是這樣做:

ssh [email protected] 'sudo -u oracle /bin/stop-process' 

並且沒有密碼w生病了。

+0

嗨。我知道使用此示例腳本的密碼連接性較低。但我正在尋找一種方法來執行此操作,以將密碼保存在腳本中或OS中的單獨文件中。在我們的服務器中,它的安全措施是不爲任何命令啓用無密碼連接。 –

+1

安全性是不要將密碼保存在腳本中的純文本中。使用ssh-key創建一個可以做到這一點的特殊用戶帳戶,並且儘可能安全。 – blue112

+0

在我所示的例子中,我將密碼保存在只有當前用戶可以打開的文本文件中,只有我知道該位置的安全性。我試圖找到一種方法來使用該文本文件登錄 –

相關問題