web-dev-qa-db-ja.com

ユーザーが自分のホームディレクトリの所有ファイルに対してscpコマンドを実行すると、scp権限が拒否されました

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」によって所有されています。

だから今、私は何が悪いのか混乱しています。

1
Ikhoon Chon

提案されたように、誰かが同様の問題を抱えている可能性がある場合に備えて、元のコメントをより詳細な回答に移動します。

@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コマンドを使用する必要があると思います。

2
Ikhoon Chon