こんにちは、minoruです。
先日のUbuntuからUbuntuを遠隔操作リモートコントロールする方法で自分のメインPCから同一LAN内にある別のPCを遠隔操作する事には成功しましたが、このままではファイルの受け渡しやファイル共有ができません。
ネット上で検索してみると対Windowsや対Macなどの情報は出てくるし、やり方も比較的簡単なのですが、Ubuntu同士のファイル共有はちょっと理解するまでに手こずってしまいました。
なので今回はUbuntu同士のファイル共有・ファイルの受け渡しについてやり方を書いていきたいと思います。
Ubuntu同士のファイル共有のやり方
まず大雑把に全体像を説明すると、Ubuntu同士のファイル共有やファイルの受け渡しを行うには「SSH」と呼ばれるアプリ(コマンド)を使います。最初に少しだけCUIのコマンドラインを使いますが、一度設定出来ればGUI(ウィンドウ操作)でもファイルの行き来ができます。
私が使用したPCはUbuntu20.04ですが、Ubuntu18.04でも可能です。
ファイル共有の準備
まず、自分が操作しているPCを「メインPC」と呼び、ファイルを送りたい、または取り出したい側のPCを「サブPC」とここでは呼ぶことにします。
一番最初にやる事は、サブPCに「SSH」というアプリをインストールする事です。SSHとは何かと言うと、SSHをインストールしたPCをサーバーとして外部からファイルへのアクセスを可能にするプログラムだと理解しておけば良いと思います。
要するにファイル共有用のアプリですね。
インストールの方法はサブPCの方のキーボードで Alt + Ctrl + T を押して端末と呼ばれる黒い画面のコマンド入力画面を表示させます。
上記のコマンドを入力してEnterキーを押してください。
もしすでにSSHがインストールされていれば「すでにインストールされてますよー」という感じのメッセージが表示されます。インストールされていなければインストール作業が進み、途中で(Y/n)みたいな感じで何か聞いてきます。
これは「Yes or No ?」と聞いているので、キーボードの「Y」を押してEnterキーを押せばOKです。インストール自体はものの数秒で完了します。
続いて、サブPCのローカルIPアドレスを把握しておきましょう。
とコマンドを入力してEnterキーを押すと、ずらずらと色んな情報が表示されますから、その中で「inetアドレス 192.168…」から始まる数字の羅列をドットの点も含めてメモに書き残しておきましょう。
コマンド 'ifconfig' が見つかりません。…と出た場合は、
でnet-toolsをインストールすれば使えるようになります。
今回は仮に192.168.0.5だったとして話を進めたいと思います。
サブPC側で必要な作業は以上です。
メインPC側のNautilusでの作業
次にメインPC側の作業ですが、Nautilusを使います。Nautilusなんてソフトは使った事が無いよ!と思う人がいるかも知れませんが、ubuntuで普段使っているファイラー(どこにどんなファイルがあるかを見ているウィンドウですね)の事です。
Nautilusのメニューからファイル→サーバーへ接続 と進んでも良いですし、GNOMEデスクトップを使用している場合はデスクトップ画面左上の「場所」→「サーバーへ接続」でも構いません。
出てきたウィンドウの上から2番目「種類」の項目は「SSH」を選びましょう。
一番上のサーバー名の項目にはssh://のあとに続いて先ほどチェックしたサブPCのローカルIPアドレスを入力すればOKですから、今回の場合はssh://192.168.0.5と入力しましょう。
次に「ユーザー情報」の欄ですが、これはメインPC側の自分のユーザー情報ではなく、サブPC側のユーザー名とパスワードですので、間違えないようにしてください。
あとは「接続する」をクリックすれば、サブPC側のルートフォルダがいつものNautilusのウィンドウに表示されるはず…なんですが!時々ここでエラーメッセージとして「ssh プログラムが突然終了しました」と表示されてしまう時があります。
その対処法は以下の通り。
ssh プログラムが突然終了しました 対処法
NautilusでSSH接続を行おうとして「ssh プログラムが突然終了しました」というエラーメッセージが出る場合は、一旦CUIのコマンドラインを使って対処を行う必要があります。
ただし、以下の方法で必ず解決するとは限りません。
まずはメインPC側で Alt + Ctrl + T を押して端末と呼ばれる黒い画面のコマンド入力画面を表示させます。そこに以下のようにコマンドを入力しましょう。
ただし、sub_pc_user_nameの部分はその文面のまま入力するのではなく、サブPC側のユーザー名で、最後の数字の羅列は一番最初の準備の時に調べたサブPC側のローカルIPアドレスを入力しなければなりません。
またsshの後の「-l」はハイフンと小文字のエルであり、大文字のアイではありません。
上記のコマンドの意味は「ssh = を起動せよ。 -l = ログインユーザー名は、 sub_pc_user_name = sub_pc_user_nameさんで、 192.168.0.5 = このLAN内の192.168.0.5が割り当てられているPCです」という感じに翻訳できます。
最後にEnterキーを押すと、以下のようなメッセージが出てきませんか?
上記のメッセージの下にもズラズラと何か出て来るのですが、なんとなく上手く行かなかったんだなという印象を受けますよね?でも、ちゃんと全文読んでみるとヒントがあります。
私も詳しい事はわかりませんが、要するにメインPCとサブPCをペアリングするために必要な何かがおかしいので、上書きするなら上記のコマンドを打て。というふうに私は理解してその通りコマンドを打ちました。
すると何やら必要なファイルを上書きしたぜ的なメッセージが表示されるので、次にもう一度先ほどのsshのコマンドを実行してみます。
すると以下のメッセージが出ました。
「ホントに接続しても良いのかい?」という問いなので、キーボードで「yes」と入力した後Enterキーを押します。(Yだけじゃダメyesと打たないと)
あ、あとその前にサブPC側のパスワード入力も求められるかな、多分。
これでコマンドラインの画面を見てみれば、サブPC側につながっているのがわかるかと思いますが、この状態になればおそらくNautilusでもつながります。エラーメッセージは出ません。
もし、この時にさらにエラーなどが表示されてしまう場合には、私の時とは別の原因なのかも知れませんので、私には解決策が提示できません。サブPC側のPC自体がちゃんと動作してんのか?とかも含めて、原因は多岐に渡るかも知れません。
コマンドラインでのファイル受け渡し
Nautilusを使えばGUIなのでファイルの受け渡しは直感的に操作できて、もはや説明は不要かと思いますが、コマンドラインを使ってファイルの受け渡しをする方法を書いておきます。
操作はいずれもメインPCから行いますからね。
※※※sshでサブPCにログインしている場合は「exit」のコマンドでメインPC側に戻ってから下記の操作を行なってください。※※※
メインPCからサブPCへファイルを送る
まずcdコマンドで送りたいファイルのあるディレクトリ(フォルダ)に移動しておきましょう。そこで以下のコマンドを打ちます。
これでサブPC側のホームディレクトリ(ユーザー個人のもっとも上の階層のフォルダ)にファイルが移動しているはずです。ちなみにscpコマンドはファイルの移動ではなく厳密には「コピー」です。
サブPCからメインPCへファイルを送る
サブPC側のファイルを送るからと言っても、メインPC側で操作すればOKです。
上記を人間の言葉に翻訳すると「scpという異なるPC間でファイルをコピーするコマンドを実行してください、コピー元のファイルは192.168.0.5のIPアドレスに割り当てられているPCのsub_pc_user_nameさんのデスクトップフォルダにあるhogehoge.jpgという画像です。コピーする先は私のPCのホームディレクトリです」という感じです。