Bash

無法通過 Bash 腳本使用私鑰進行 SSH

  • November 20, 2015

首先,如果這是一個非常明顯/微不足道的問題,我深表歉意,我仍在學習 linux/unix 的來龍去脈。

我使用一些需要通過 ssh 和私鑰訪問才能登錄的伺服器。所以,命令是這樣的:

ssh -i /path/to/key.pem user@000.000.000.000

我創建了一個 bash 腳本,讓我只使用我自己的呼叫,access,並且只有一個基本的 switch 語句用於隨後的參數來控制我登錄到哪個伺服器。例如,access server1將發出適當的ssh命令以登錄到 server1。

問題

電話剛剛掛斷,ssh我留下了一個不接受SIGINT( Ctrl+ C) 的空終端,我必須退出終端並再次打開它才能使用它。

據我所知,這可能是私鑰的權限問題。它的權限目前是600. 將其更改為644給我一個錯誤,即權限太開放並退出ssh嘗試。有什麼建議嗎?

  1. ssh_config,為此,您可以在其中指定主機別名和密鑰並將其儲存,而無需創建諸如 bash 腳本之類的 hara-kiri 來執行此操作。它基本上~/.ssh/config以這種格式儲存在您的:
Host host1
 Hostname 000.000.000.000
 User user
 IdentityFile /path/to/key.pem

然後你可以簡單地打電話

ssh host1

到達,得到000.000.000.000 2. 如果你真的想要高效並且擁有更短的快捷方式,那麼 bashalias比 bash 腳本更適合。

alias access="ssh -i /path/to/key.pem user@000.000.000.000"
  1. 如果你真的想使用 bash 腳本,你需要強制 ssh 使用-tt選項在遠端伺服器上分配你的 TTY:
ssh -tti /path/to/key.pem user@000.000.000.000

有關更多提示,您可以瀏覽 和 的手冊sshssh_config

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