Ssh

無需提供密鑰即可在 EC2 實例之間進行 SSH

  • March 25, 2021

我正在嘗試在沒有密鑰的情況下啟用從一個 EC2 實例到另一個實例的 SSH。

$ ssh ubuntu@slave給我一個權限被拒絕(公鑰)

$ ssh -i aws-key.pem ubuntu@slave按預期正常工作。

由於我想啟用 ssh 少日誌記錄,因此我執行了以下操作

1)在主實例中生成一個密鑰,如

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa_master_to_slave

2)將該密鑰添加到同一主實例的授權密鑰列表中

$ cat ~/.ssh/id_dsa_master_to_slave.pub >> ~/.ssh/authorized_keys
  1. SCPed 公鑰文件到從屬實例。
$ scp -i aws_key.pem /home/ubuntu/.ssh/id_dsa_master_to_slave.pub  ubuntu@slave:~/
  1. 將 SCP-ed 文件也添加到從屬實例的授權密鑰列表中。
$ cat id_dsa_master_to_slave.pub >> ~/.ssh/authorized_keys

仍然當我在不證明 pem 文件的情況下嘗試 SSH 時,我得到了

Permission Denied (Public Key)

我錯過了什麼嗎?

ssh-add ~/aws-key.pem在 ssh 到 ubuntu 主機之前,您需要這樣做。這會將您的 aws-key 添加到您的 ssh 代理。參見:linux.die.net/man/1/ssh-add

是的,一種方法是:

  • 創建一個新的密鑰對ssh-keygen
  • 使用將私鑰添加到 ssh-agentssh-add id_rsa
  • 添加生成的 id_rsa.pub 與ssh-copy-id user@host
  • 如果 ssh-copy-id 不起作用,

cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/my.key ubuntu@10.0.0.X "cat >> ~/.ssh/authorized_keys"

aws-key.pem另一種(不好的)方法是將創建實例期間使用的密鑰上傳到所有 ec2實例。在每個實例上,我們可以添加這個 aws-key.pem 使用ssh-add aws-key.pem將在所有實例(包括本地主機)之間啟用無密碼 ssh。但是在這種情況下,每次我們登錄到 ec2 時,我們都必須重複這一步。

如果我們需要無密碼 ssh b/w 主伺服器和所有從伺服器(即,從伺服器之間沒有無密碼 ssh),那麼我們可以只ssh-add aws-key.pem在主伺服器上。

一個相關問題是當我們嘗試在 ec2 實例之間設置無密碼 ssh 以設置 HADOOP 集群時。從這裡, master 只通過 ssh 訪問 slave。從站不相互互動。文件中的另一個選項是:

注意,master 機器通過 ssh 訪問每個 worker 機器。預設情況下,ssh 是並行執行的,並且需要設置無密碼(使用私鑰)訪問。如果您沒有無密碼設置,您可以設置環境變數 SPARK_SSH_FOREGROUND 並連續為每個工作人員提供密碼。

引用自:https://serverfault.com/questions/616326