各位大大們好!我嘗試從我的桌機 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>
就可以更新全部的檔案差異...