scp
を使用する際の「アクセスが拒否されました」エラーに関する多くの投稿を確認しましたが、問題の答えが見つかりませんでした。
AWSの同じネットワーク上に2つのUbuntuサーバー(サーバー 'A'と 'B'としましょう)があり、1つのファイルを別のサーバーにコピーしようとしたところ、AからBは機能していませんが、BからAは機能しています。 (下記を参照してください)
サーバー「A」で
ubuntu@server-a ~ $ ls -alt server*
-rwxr-xr-x 1 ubuntu ubuntu 8152 Aug 9 14:26 server.xml.bak
ubuntu@server-a ~ $ scp -P 443 server.xml.bak [email protected]:/home/ubuntu/
Permission denied (publickey).
lost connection
ubuntu@server-a ~ $ scp -P 443 /home/ubuntu/server.xml.bak [email protected]:/home/ubuntu/
Permission denied (publickey).
lost connection
また、リモートファイルをここにコピーしようとしましたが、失敗しました。
ubuntu@server-a ~ $ scp -P 443 [email protected]:/home/ubuntu/sakila.sql .
Permission denied (publickey).
しかし、サーバー 'B'からは、すべて機能しました。
ubuntu@server-b ~ $ scp -P 443 [email protected]:/home/ubuntu/server.xml.bak .
server.xml.bak 100% 8152 8.0KB/s 00:00
ubuntu@server-b ~ $ scp -P 443 sakila.sql [email protected]:/home/ubuntu/
sakila.sql 100% 3153KB 3.1MB/s 00:00
ご覧のとおり、これは権限の問題ではありません。すべての操作は「ubuntu」ホームの「ubuntu」によって実行され、ファイルも755モードの「ubuntu」によって所有されています。
だから今、私は何が悪いのか混乱しています。
提案されたように、誰かが同様の問題を抱えている可能性がある場合に備えて、元のコメントをより詳細な回答に移動します。
@lgeorgetのコメントからヒントを得ました-scp -v
を使用してコマンドを実行しましたが、秘密鍵がないことが原因です。
セキュリティ上の理由から、サーバー上のすべての秘密鍵を削除し、代わりに秘密鍵の管理にPageantを使用しました。このシナリオでは、PuTTYを使用してB(Bは要塞サーバー)に接続し、別のPuTTYターミナルを開き、再びBに接続してから、sshを介してAに接続しました。したがって、PageantはBの秘密鍵を処理できますが、Aの秘密鍵を直接処理することはできません(これを認識できませんでした)
その結果、BからターゲットサーバーAへのscpコマンドは機能しますが、AからターゲットサーバーBへのscpコマンドは機能しません。
テストのために秘密鍵をAにアップロードすると、Aからのscpコマンドも正常に機能します。
サーバーに秘密鍵を保持できないので、サーバーBでのみscpコマンドを使用する必要があると思います。