#書いてある内容
Windows上のTeratermからリモート側からクライアント側にscp
でファイルを投げようとしたらPermission denied(public key)
って言われた時の原因と対策。
#結論
- コマンドではなくTeraterm自体のSCP機能を使う(Windowsならば)
- 送信したいファイルの権限や所有者の権限が強い場合にはchmodやchownで変更する
#そもそも、Permission denied(publickey)とは何か
Permission Deniedは何らかの原因でサーバーが接続を拒否してきています。
public key(公開鍵)に問題がある様子。ただ、このエラーの原因はいろいろあるっぽい。
#コマンドではなくTeraterm自体のSCP機能を使用する
そもそもWindowsOSそのものにはそのままの設定ではLinuxのようにSCPクライアントがないので、上のようにTeratermのSCPクライアントを別途使用して対応するとできるようです。認証情報もログインした際の認証情報をそのまま使っている様子。
##Windows10のOpenSSHを使用する
ただ、Windows10にはOpenSSHクライアントが存在してる様子なので、Windows標準のSSHクライアントを設定することもでき、それでもできる可能性があります(試していません)設定方法は@szlyさんのまとめがわかりやすいので下記に記載
#送信したいファイルの権限や所有者の権限が強い場合にはchmodやchownで変更する
##症状
通常のテキストファイルを送信する分には使用可能にもかかわらず、EasyRSAなどでクライアント用の認証鍵を作ったのでクライアント送信しようとすると、Teratermのファイル送信機能でもどうしてもうまくいかない。
##原因
ls -l
で送信したいファイルの状況を見ると、どうやら権限がrootになっている様子。
-rw------- 1 root root 1696 Jan 27 11:38 authorization.pem
##解決策
SSHで最初にログインしたユーザーの権限でも使用できるように権限か管理者を変更すると、送信可能です。具体的にはパーミッション(権限)はchmod
、管理者はchown
で変更していきます。
###1. chmodで対応する場合
上のケースの対応について考えていきます。ユーザ・グループともにrootが持ってしまっているので、chmodでそれ以外のユーザが読めるようにセットすれば呼び出しが可能です。
下の票を参考に、その他のユーザに対する権限に4を与えてあげます。
記号 | 数値 | 対応する権限 | |
---|---|---|---|
r | → | 4 | 読み込み可能 |
w | → | 2 | 書き込み可能 |
x | → | 1 | 実行可能 |
- | → | 0 | 権限なし |
sudo chmod 604 authorization.pem
これでダウンロード可能になります。
###2.chownで対応する場合
chownは所有ユーザ・グループを変更するためのコマンドです。
login-user:login-user
のところで、ユーザ、グループ、の順で指定が可能です。
今回はどちらも変えてしまいます。
sudo chown login-user:login-user authorization.pem
この後にTeratermで送信をかけるとうまく送信可能です。