使用 Vim 建立“authorized_keys”檔案時 SSH 存取被拒絕

使用 Vim 建立“authorized_keys”檔案時 SSH 存取被拒絕

我使用 Ubuntu 16.04 AMI 建立了一個 ec2 實例。我為此 AMI 創建了一個 sudo 用戶:

sudo adduser myuser
sudo usermod -aG sudo myuser

然後我嘗試使用我已有的 rsa 金鑰對為使用者提供 ssh 存取權。我為新使用者建立了一個 .ssh 目錄:

mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

我將公鑰複製並貼上到“authorized_keys”中。然後我退出 ec2 並測試我的連線:

cd ~/.ssh
ssh -i "mypem.pem" [email protected]

我收到一條錯誤訊息“訪問被拒絕(公鑰)”

所以我廢棄了該用戶並創建了另一個用戶。這次使用 nano 而不是 Vim 創建了“authorized_keys”文件,並且它起作用了。

有人經歷過這件事嗎?

答案1

可能是你貼錯了。

  • 它以ssh-rsa或 以 開頭ssh-ed25519
  • 前面有空格嗎(不應該)
  • 是否保留大寫/小寫?
  • 行尾的任何註解之前是否有空格?

在 vim 中貼上任何內容之前,您應該使用:set paste,因為它會關閉任何可能的活動自動完成/自動縮排/...巨集。

另一件事是,您編寫的mykey.pem,這是 openssl 檔案的常用副檔名,而不是 ssh-keys。您確定您使用了id_rsa.pub/id_ed25519.pub作為 ssh-pubkey 嗎?

答案2

如果發生類似的情況,我建議在 ViM 中檢查fileencryption,fileformatbomb。比較兩個文件,即使用 nano 編輯的文件和使用 vim 編輯的文件。用 vim 打開它們並檢查:

:set bomb? 這是位元組順序標記。通常在 Windows 上使用 notepad.exe 編輯 UTF-8 檔案時設定。我經常遇到這個問題。

:set ff? 文件格式dosunix. dos 的行結尾與 unix 不同。

:set fenc? 檔案編碼:也許一個編輯器將其更改為 latin1 而不是 UTF-8。

答案3

myuser 必須有權利存取 .ssh 和金鑰檔案。檢查誰擁有它們。

相關內容