無需提供密鑰即可在 EC2 實例之間進行 SSH
我正在嘗試在沒有密鑰的情況下啟用從一個 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
- SCPed 公鑰文件到從屬實例。
$ scp -i aws_key.pem /home/ubuntu/.ssh/id_dsa_master_to_slave.pub ubuntu@slave:~/
- 將 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-agent
ssh-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 並連續為每個工作人員提供密碼。