web-dev-qa-db-ja.com

キーファイルを使用してサーバー間でデータをsftp転送する方法

私はscpできません。他のサーバーはsftp接続しか受け付けません。

現在、私はしようとしています

sftp [email protected]:/files> put -r ~/

-i keynameは機能せず、illegal option -- iで解決されます。

26
Jay

試してください:

sftp -o "IdentityFile=keyname" [email protected]

-oを使用して、~/.ssh/configで有効なオプションを渡すことができます。

36
Celada

従来の方法でPUBLICキーをサーバーにコピーします。

サーバー上:

  • 存在しない場合は.sshを作成します。
[[! -d "$ {HOME} /。ssh"]] && mkdir -p "$ {HOME} /。ssh"
  • 公開鍵を実装します。
cat /path/to/public_key.pub >> "$ {HOME} /。ssh/authorized_keys"
  • 適切な権限を設定します。 OpenSSHは問題のファイルのアクセス許可について非常に肛門です:
chmod go-rwx "$ {HOME}" "$ {HOME} /。ssh/authorized_keys"

その後、PRIVATEキーを使用してクライアントからログインできるようになります。転送を自動化するには、実行するコマンドのリストを含む単なるテキストファイルであるバッチファイルを使用します。

 echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile =/path/to/private_key user @ Host 

または、〜/ .ssh/configファイルをssh_config形式で作成して、将来これを入力することもできます。

 sftp -b /tmp/batchfile.txt Host 

~/.ssh/configのサンプルコンテンツ

ホストthe_hostname 
ユーザーuser_name 
 IdentityFile /path/to/private_key
4
UtahJarhead

Ec2でsftpをセットアップする場合は、 この記事 が役立つ可能性があります

1
Anshu

私は最近この問題に遭遇し、私のMacbookのデフォルトのターミナル設定で私のために働いたのは次のとおりです

sftp -i ./privateFilePath.key [email protected]

NPROTECTED PRIVATE KEY FILE!メッセージで昇格される可能性があることに注意してください。この場合、このコマンドを実行して、他のユーザーが秘密鍵にアクセスできないようにする必要があります。

chmod 600 privateFilePath.key 

Sudoをコマンドの前に置く必要がある場合もあります。これは、adminで保護されたディレクトリで作業している場合のみです。

参考になれば幸いです:)

0
KhaledMohamedP