相关文章推荐
悲伤的拖把  ·  ubuntu 12.04 安装 samba ...·  2 天前    · 
烦恼的日记本  ·  Ubuntu ...·  2 天前    · 
爱跑步的鸡蛋  ·  ubuntu安装samba失败 ...·  2 天前    · 
乐观的针织衫  ·  SQL server ...·  1 年前    · 
冲动的显示器  ·  Configure ASP.NET ...·  1 年前    · 
酷酷的柠檬  ·  SAPABAP/ui2/cl_json=&g ...·  1 年前    · 

各位大大們好!我嘗試從我的桌機 windows10 使用終端機上傳檔案到 我的 AWS 主機,卻碰到key 的權限報錯,而且不同的終端機,顯示報錯的情形也不相同,狀況如下:
我的命令:

scp -i "*****.pem" 001.jpg ubuntu@ec2-54-***-**-164.ap-northeast-1.compute.amazonaws.com:/var/www

終端機共3種 cmd Cmder Gitbash 輸出如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '*****.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "*****.pem": bad permissions
ubuntu@ec2-54-***-**-164.ap-northeast-1.compute.amazonaws.com: Permission denied (publickey).
lost connection

Cmder:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '*****.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "*****.pem": bad permissions
ubuntu@ec2-54-***-**-164.ap-northeast-1.compute.amazonaws.com: Permission denied (publickey).
lost connection

Gitbash:

load pubkey "*****.pem": invalid format
scp: /var/www/001.jpg: Permission denied

我原本以為是*****.pem檔案權限問題所以也執行了以下命令:(沒有改善)

chmod 400 *****.pem

終端機共3種 cmd Cmder Gitbash 輸出如下

'chmod' is not recognized as an internal or external command,
operable program or batch file.

Cmder 和 Gitbash 都沒有報錯也沒有輸出任何訊息
請教有經驗的大大,指點一下迷津。

另一個問題
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '*****.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "*****.pem": bad permissions
ubuntu@ec2-54-***-**-164.ap-northeast-1.compute.amazonaws.com: Permission denied (publickey).
lost connection
是否也能指點一下 另一個問題 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions for '*****.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "*****.pem": bad permissions ubuntu@ec2-54-***-**-164.ap-northeast-1.compute.amazonaws.com: Permission denied (publickey). lost connection 是否也能指點一下

AWS 給你的帳號只是 sudoer user, 不是 root, 你要先登入進去 sudo 之後, 才有權限可以寫入:除了 home directory 以外的其他目錄...

但是 scp 不會幫你下 sudo 指令, 所以你無法用 scp 去變更身分

你有幾種解法:

  • 先 scp 把檔案傳進預設的 default home 目錄 (或者 /tmp, 通常 /tmp 都是 mode 777), 然後再用 ssh 進去, sudo 之後, 將檔案搬到指定的目錄中; 若嫌麻煩, 你可以寫成一個 script 自動執行:
  • ssh serverb sudo mkdir tempdir && sudo chmod 777 tempdir
    scp yourfile serverb:tempdir
    ssh serverb mv tempdir/yourfile /path/to/the/destination
    
  • AWS 的 sudo 是不需要密碼的, 所以你可用 rsync 幫你提權傳檔:
  • rsync --rsync-path="sudo rsync" <LOCALFILE> USER@SERVER2:/root
    
  • 你也可以用 ssh+tar 透過 pipeline 來代替你 sudo 傳檔:
  • ssh -t host 'sudo -v'
    ssh -C host 'cd /; sudo tar cf - path/to/file/or/dir' | tar xpsf - --preserve
    以上一切的麻煩, 在有人發明 git 之後, 就全部都解決了....你只需要用 ssh 登入, sudo 之後到指定的資料夾, 執行:
    
    git pull <your_git_repository>
    

    就可以更新全部的檔案差異...