🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

1回答

2321閲覧

linux 秘密鍵について(rsyncコマンドを実行したい)

hiroki88

総合スコア66

公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

0クリップ

投稿2021/01/27 08:46

初心者なため自分の解釈が違っている可能性があるのでご容赦ください。

(やっていること)
awsの環境がありその中で踏み台サーバにあるデータを管理サーバに転送しています。
転送の仕方はscpコマンドで転送し、その後差分ファイルがあった場合にrsyncコマンドで
差分を転送します。
このやり方以外は考えておりません。

(困っていること)
scpコマンドで転送は上手くいっているのですがrsyncコマンドを実行するときは
エラーになってしまいます。

↓実行コマンド

Teraterm

1scpコマンド 2scp -r -p -i ~/.ssh/秘密鍵.pem 転送元ディレクトリパス 管理サーバユーザ名@ホスト名:転送先ディレクトリパス 3 4rsyncコマンド 5rsync -achnv -e 'ssh -i ~/.ssh/秘密鍵.pem' 転送元ディレクトリパス 管理サーバユーザ名@ホスト名:転送先ディレクトリパス

↓エラー内容

Teraterm

1Warning: Identity file ~/.ssh/秘密鍵.pem not accessible: No such file or directory. 2Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 3rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] 4rsync error: unexplained error (code 255) at io.c(605) [Receiver=3.0.9] 5 6 7警告:IDファイル〜/.ssh/秘密鍵.pemにアクセスできません:そのようなファイルまたはディレクトリはありません。 8許可が拒否されました(publickey、gssapi-keyex、gssapi-with-mic)。 9rsync:接続が予期せず閉じられました(これまでに0バイトを受信しました)[受信者] 10rsyncエラー:io.c(605)での原因不明のエラー(コード255)[Receiver = 3.0.9]

実行したscpとrsyncコマンドの秘密鍵、送信元先のディレクトリパスは同一のものを使用しております。
rsyncがインストールされているかはrsync --versionで3.0.9と表示されたので問題ないと思います。

scpコマンドはできてrsyncコマンドはできない原因が分かっておりません。
秘密鍵について知識がないので素人の考えですが実行するコマンド事に秘密鍵を生成しないといけないものなのでしょうか?踏み台サーバから管理サーバにsshできる秘密鍵が1つあればコマンド事というのは関係ないでしょうか。
一応sudoを使用して試してみましたが全く同じエラーでした。
もし原因が分かる方がいたらご教示お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

すみません、大幅にずれたことを書いたので消しました。

投稿2021/01/27 08:52

編集2021/01/27 08:56
68user

総合スコア2022

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroki88

2021/01/27 09:01

実行できました...。 色々記事を見ててっきりシングルクォートと勘違いしておりました。 そこが間違っていたとは気づきませんでした。 大変ありがとうございます!!!
68user

2021/01/27 09:16

えっ、シングルクォートとバッククォートに変えたら動きましたか? いやそんなはずはないような…
68user

2021/01/27 10:16

ひとりごとですが、 > Warning: Identity file ~/.ssh/秘密鍵.pem not accessible: No such file or directory. は ssh が出力している warning と思われますが、この時点で ~ が展開されていないということはシェルが ~ の展開に失敗している? そのようなことがありうるのか? と思いました。
hiroki88

2021/01/28 01:21

シングルをバックに変更したら実行できてしまいました...。 コメントして頂いたように秘密鍵の箇所がおかしい気はしたのですが。 シングルで囲っていたために展開が上手くいっていなかったというのは考えられないでしょうか?
68user

2021/01/28 02:43

よろしければ echo rsync -achnv -e `ssh -i ~/.ssh/秘密鍵.pem` 転送元ディレクトリパス ... > xxxx cat xxxx の結果を教えてほしいです。 また、 rsync -achnv -e `ssh -i ~/.ssh/秘密鍵.pem` 転送元ディレクトリパス ... とバッククォートで動いたということは、 rsync -achnv -e "" 転送元ディレクトリパス ... でも動きますかね? これで動くなら rsync -achnv 転送元ディレクトリパス ... でも動くんじゃないでしょうか。
hiroki88

2021/01/28 04:45

usage: ssh [-1357AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q cipher | cipher-auth | mac | kex | key] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] sending incremental file list drwxr-xr-x 100 2019/011/19 10:50:04 ディレクトリ名 drwxr-xr-x 100 2019/011/19 10:50:04 ディレクトリ名 drwxr-xr-x 100 2019/011/19 10:50:04 ディレクトリ名 .....ファイル多数 sent 7.4K bytes received 19 bytes 10.08K bytes/sec total size is 38.55M speedup is 8079.95 (DRY RUN) 上記がrsyncを実行した時の結果です。 オプションは-chnvuaoを使用しました。 ちなみにご指摘いただいたやり方で実行するとエラーが発生します。
68user

2021/01/28 04:51

rsync 実行だと標準出力と標準エラー出力が混ざって、rsync にどのようなパラメータが渡っているかわからないので echo 文で確認させていただきたいという意図でした。
hiroki88

2021/01/28 07:54

失礼いたしました。 echo文は使用していたrsyncのコマンドの先頭にechoをつけるだけでよろしいでしょうか?
68user

2021/01/28 07:58

成功するバッククォートの rsync の先頭に "echo " を付けて、末尾に "> xxxx" を付けて実行いただければと思います。 そして rsync -achnv -e "" 転送元ディレクトリパス ... rsync -achnv 転送元ディレクトリパス ... はいずれも失敗ということですかね。 いずれもわたしが気になるだけなので、お忙しければ特にご対応いただかなくても問題ございません。
hiroki88

2021/01/28 08:10

echo rsync -achnvo -e `ssh -i ~/.ssh/秘密鍵.pem` 管理サーバユーザ名@ホスト名:ディレクトリパス ディレクトリパス > xxxx usage: ssh [-1357AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q cipher | cipher-auth | mac | kex | key] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] こちらで合っていますかね?実行してみました。 rsync -achnv -e "" 転送元ディレクトリパス ... rsync -achnv 転送元ディレクトリパス ...はできておりません。 エラーは下記の通りになります。 rsync: Failed to exec -l: No such file or directory (2) rsync error: error in IPC code (code 14) at pipe.c(84) [Receiver=3.0.9] rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: error in IPC code (code 14) at io.c(605) [Receiver=3.0.9] いえ、こちらこそ対応して頂きましてありがとうございます。自分では調べても分からないので...。
68user

2021/01/28 08:27

echo で生成されたファイル xxxx の内容を教えていただきたいです。
hiroki88

2021/01/28 08:42

rsync -achnvo -e 管理サーバユーザー名@ホスト名:ディレクトリパス ディレクトリパス ↑xxxxの中身ですがこちらしか記載されておりませんでした。
68user

2021/01/28 14:12

ありがとうございます。予想通りです。 通常は rsync -e 'ssh -i ~/.ssh/秘密鍵' や rsync -e 'ssh -p 20000' でポート指定など、ssh に追加オプションを指定したい場合などに -e で渡します。 なので、rsync までちゃんと文字列が渡るようにシングルクォートやダブルクォートで囲むべきです。バッククォートにしてしまうとシェルが先に解釈してしまい、今回のように -e の後が空になります。その結果 rsync はエラーになるはず。 しかしながらエラーにならないどころかうまく動くということであれば・・・なぜでしょうね。これ以上はわかりません。お手数をおかけしましたがすっきりせず申し訳ございません。
hiroki88

2021/01/29 01:27

かしこまりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問