2009-12-17 65 views
7

我有這個bash文件,要求爲設備的OpenSSH IP,密碼等。Bash:控制SSH

現在,如果我使用ssh [email protected],我必須輸入密碼。這真的很刺激。其次;我不能讓我的腳本發送命令給它。

這是我want->

  1. 不是密碼的事情;我已經找到一些東西;但它告訴我的命令都沒有發現?:

    #!/usr/bin/expect -f

    spawn ssh [email protected]$IPADDR

    expect "password:"

    sleep 1

    send "$rpass\r"

  2. 我希望用戶能夠看到一些可供選擇的菜單;之後;每一個命令都是爲他完成的。所以就像一個新窗口,或類似的東西?

  3. 我不想使用:SSH連接的 - 任何外部的東西 - 無額外編輯

BASH信息:GNU猛砸,V 4.0.33(1) - 釋放(i486-pc-linux-gnu),在Linux Mint上運行。但它可用於幾個Linux發行版,並在Mac上?

+1

Dup的:http://stackoverflow.com/questions/1449932 – ephemient 2009-12-18 23:05:40

回答

2

許多工具可以竭盡全力防止你在做什麼。我推薦使用ssh公鑰來解決這個問題,而不是密碼。

大的選擇是編寫你自己的基於開源的修改過的ssh客戶端,以控制密碼管理。

哦,好吧,我忘了。你可以用pty代替它,因爲/ dev/tty將是你控制的。期待可能會幫助你。

+1

我說:'在SSH connection'的無需額外編輯;包括公鑰。 – 2009-12-17 20:50:02

+0

我可以開始編輯ssh客戶端,但需要一些時間。感謝您的建議。 – 2009-12-18 07:22:17

1

使用ssh-keygen爲您的機器創建一個公鑰,然後將您的本地~/.ssh/id_rsa.pub~/.ssh/identity.pub複製到遠程系統的~/.ssh/authorized_keys中。

您可能需要擰緊authorized_keys文件的權限:chmod 600

2

Expect是自動化互動環節通常的工具。

+0

我已經在我的問題中給出了這個,但是我沒有生成併發送。現在,我真的必須下載它們,放在我的文件夾中?如此苛刻。 – 2009-12-17 21:00:00

+0

那些是期待命令,你是通過期望來運行腳本,是嗎? – 2009-12-17 23:44:41

+0

產卵和發送是'expect'識別的命令。它們不是單獨的下載。你需要確保你的系統在shebang中的'expect'路徑是正確的。你也可能想在'expect'腳本中使用'interact'命令。 – 2009-12-18 01:07:29

1

您考慮過Paramiko嗎?這是一個用於與SSH交互的Python庫。

+0

我可以通過bash與它交互嗎? – 2009-12-18 07:30:17

+1

取決於你想要的。如果您提供了更多關於您正在嘗試解決的問題的詳細信息,則幫助起來會更容易。 – 2009-12-18 08:04:41

+0

我試圖做的是使用bash製作一種ssh客戶端。我非常喜歡Paramiko的想法。但我需要做的是與bash進行交互。代碼是用bash編寫的,我希望它能保持這種狀態。我不知道Python;我是一個開始的程序員。無論如何;我想做的事情就像(幾乎)所有可能的一切,ssh;在paramiko中輸入密碼,cd到目錄;許可編輯;刪除文件/文件夾;創建文件夾;將文件/文件夾從PC複製到設備;等等。 – 2009-12-18 08:11:44

13

正確的方式做到這一點,而不是在你的機器上以明文存儲密碼是用ssh。首先運行:

SSH-凱基

這將在~/.ssh/id_rsa.pub新的SSH密鑰。在此之後,只需運行:

的ssh-copy-id命令[email protected]

如果你在OS X或不具有 「SSH-複製ID」 另一臺機器有一行alternatives如這一個:

cat〜/ .ssh/id_rsa.pub | SSH用戶@機器 「的mkdir的〜/ .ssh;貓>>的〜/ .ssh/authorized_keys的」

最後你只需要在本地計算機上的~/.ssh/id_rsa.pub內容附加到~/.ssh/authorized_keys在遠程服務器上。你如何做到這一點取決於你,以上只是做到這一點的快捷方式。

+0

我很樂意爲downvoter解釋自己,但這可能要求太多。 – Chev 2016-11-17 20:00:17

1

即使我會用PEM鍵這一點,這是一個老話題,我也想引用sshpass

2

正確的方法去是複製鍵作爲已經在這裏說。爲了增加對話的內容,有些情況下sshpass可以得心應手。

該問題具體詢問了使用SSH的系統中的腳本。如果它是一個嵌入式系統的開發,它可以是sshpass通過命令行選項結合有用,因爲它讀取這個帖子

sshpass -p raspberry ssh [email protected] 

這可以用

ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] 

避免確認相結合阻止腳本發生的問題。

同樣,只有在不同的機器共享IP且安全性不重要的開發系統中使用它。

https://ownyourbits.com/2017/02/22/easy-passwordless-ssh-with-sshh/