Armadilloフォーラム

SORACOM Napterを使用し,SSH接続したArmadilloからファイルをダウンロードする

keiko-502

2023年7月4日 14時32分

SORACOM Napterを使用し,SSH接続したArmadillo-IoT G3から特定のファイルをダウンロードし,中身を編集した後,再度Armadilloに転送するような仕組みを作成したいtと考えています。

SORACOMの方でオンデマンドリモートアクセスを作成し,取得したホスト名とポート番号を使用してTeraTermからSSHで接続し,scpコマンドを入力してファイルをダウンロードしようとするとコマンド入力後,何も起こらない状態に悩まされています。

例として,SORACOMのオンデマンドリモートアクセスを作成し,ホスト名:12-345-67-89.napter.soracom.io,ポート番号:12345が得られたとします。
TeraTermを開き,TCP/IPを選択,Hostにホスト名,TCP portにポート番号を入力し,SSH接続しました。
atmarkのパスワードを入力し,atmark@armadillo:~$が表示され,lsコマンドを送信し,ファイルの一覧が表示されたことから,接続は正常に行えたと判断しています。

その後,リモートアクセスしているパソコンにファイルをダウンロードするため以下のコマンドを入力しましたが,入力後,なんの反応もない状態です。
scp atmark@12-345-67-89.napter.soracom.io:/home/atmark/test.txt \User\test\Desktop

コマンドの使い方や解釈が間違っているのでしょうか。

コメント

at_koseki

2023年7月4日 14時56分

古関です。

> TeraTermを開き,TCP/IPを選択,Hostにホスト名,TCP portにポート番号を入力し,SSH接続しました。
> atmarkのパスワードを入力し,atmark@armadillo:~$が表示され,lsコマンドを送信し,ファイルの一覧が表示されたことから,接続は正常に行えたと判断しています。

> その後,リモートアクセスしているパソコンにファイルをダウンロードするため以下のコマンドを入力しましたが,入力後,なんの反応もない状態です。
> scp atmark@12-345-67-89.napter.soracom.io:/home/atmark/test.txt \User\test\Desktop
>
> コマンドの使い方や解釈が間違っているのでしょうか。

これは、SSHでArmadilloにログインし、Armadilloに対してコマンドを実行しているのでしょうか?
それとも、パソコンのコンソールでコマンドを実行しているのでしょうか?

もし前者であれば、srcとdstが逆にみえます。
scp /home/atmark/test.txt username@hostname:\User\test\Desktop\

後者であれば、PC側にscpコマンドが存在してるのかと、
ポート番号が指定されていないことが気になります。
デフォルトだと12345等は使われないはずですので。

Linuxだと -Pオプションで指定できますか。パソコンはWindowsでしょうか。

keiko-502

2023年7月4日 15時58分

コメントありがとうございます。

> これは、SSHでArmadilloにログインし、Armadilloに対してコマンドを実行しているのでしょうか?
> それとも、パソコンのコンソールでコマンドを実行しているのでしょうか?
SSHでArmadilloにログインし,lsコマンドを使用して保存されているファイルを確認したりしていることからArmadilloに対してコマンドを実行している認識です。

> もし前者であれば、srcとdstが逆にみえます。
> scp /home/atmark/test.txt username@hostname:\User\test\Desktop\
>
> 後者であれば、PC側にscpコマンドが存在してるのかと、
> ポート番号が指定されていないことが気になります。
> デフォルトだと12345等は使われないはずですので。
ポート番号は例として記載し,実際のポート番号はSORACOMのオンデマンドリモートアクセスを作成した際に発行されたものが別にあります。
scpコマンドを使用する際にも,このポート番号を使用するのでしょうか。

> Linuxだと -Pオプションで指定できますか。パソコンはWindowsでしょうか。
パソコンはWindowsになります。また,-Pオプションも試してみましたがやはり同じように何も起こらないままでした。

keiko-502

2023年7月4日 16時10分

追記となります。

今,scp atmark@12-345-67-89.napter.soracom.io:/home/atmark/test.txt \User\test\Desktopを実行し,しばらく放置していると,
画面上に以下のメッセージが表示されていました。
ssh connect to host 12-345-67-89.napter.soracom.io port 22: Connection timed out

内容的に通信がタイムアウトしたものと思いますが,追記として記載します。

at_koseki

2023年7月4日 16時16分

古関です。

> SSHでArmadilloにログインし,lsコマンドを使用して保存されているファイルを確認したりしていることから
> Armadilloに対してコマンドを実行している認識です。

Armadilloに対してscpコマンドを実行するのであれば、
PC側をグローバルIPにするなど、インターネット側からPCに到達できるようにする必要がありますが
どのようなネットワーク構成になっているでしょうか?
社内ネットワーク等であればFirewall等で外部からセッションが開始する通信は
弾かれる可能性があります。

SSHでPCからArmadilloにログインできているならば、
PCに対してscpコマンドを実行した方がハードルが低そうです。

別の要因で問題が起こっている可能性もありますので、
手元にSORACOM SIMがありますのでこちらでも確認してみます。
(ごめんなさい、確認できるのは夜になりそうです)

よろしくお願いいたします。

at_koseki

2023年7月4日 16時34分

古関です。

> 今,scp atmark@12-345-67-89.napter.soracom.io:/home/atmark/test.txt \User\test\Desktopを実行し,
> しばらく放置していると,画面上に以下のメッセージが表示されていました。
> ssh connect to host 12-345-67-89.napter.soracom.io port 22: Connection timed out
scpコマンドでポート指定をしていないため、
デフォルトのポート22番を使用され、タイムアウトしているのではないでしょうか。

以下のように、SORACOM Napterから払い出させるポート番号を指定するとできませんでしょうか。
scp -P [SORACOMが割り当てるポート番号] atmark@12-345-67-89.napter.soracom.io:/home/atmark/test.txt \User\test\Desktop

> SSHでArmadilloにログインし,lsコマンドを使用して保存されているファイルを確認したりしていることからArmadilloに対してコマンドを実行している認識です。
あと、これならばPCからArmadilloにscpしようとしているように見えますが、
認識ズレていませんでしょうか?

at_koseki

2023年7月4日 22時21分

古関です。

こちらの環境でも試しましたが、以下のように動作確認できました。
ポート指定が上手くいっていないか、PC側のネットワーク環境の問題の可能性が高そうです。

■ SIM
* SORACOM Plan-D

■ TeratermでArmadilloにSSHログイン後コマンド実施
-----------------------------------------------------------------------
atmark@armadillo:~$ date > aaa.txt
atmark@armadillo:~$ cat aaa.txt
Tue Jul 4 21:21:41 JST 2023
-----------------------------------------------------------------------

■ Windows11 PCのコマンドプロンプトで SCPコマンド実行
Armadillo上にあるファイル(aaa.txt)をWindowsPCにコピー
-----------------------------------------------------------------------
Microsoft Windows [Version XXXXXXXXXXXXXXXXX]
(c) Microsoft Corporation. All rights reserved.

C:\Users\XXXXX>scp -P [port] atmark@[hostname]:/home/atmark/aaa.txt \Users\XXXXX\Desktop
The authenticity of host '[hostname]:[port] ([IP]:[port])' can't be established.
ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?yes
Warning: Permanently added '[hostname]:port' (ED25519) to the list of known hosts.
atmark@[hostname]'s password:
aaa.txt 100% 29 0.3KB/s 00:00

C:\Users\XXXXX> type \Users\XXXXX\Desktop\aaa.txt
Tue Jul 4 21:21:41 JST 2023
-----------------------------------------------------------------------

keiko-502

2023年7月5日 13時46分

動作確認いただきありがとうございます。

記載いただいた結果を参考に,コマンドプロンプトで入力してみましたが,以下のように表示されました。
The system cannot find the file specified

ご確認いただいたコマンドについてですが,[port]と[hostname]はオンデマンドリモートアクセスを作成した際に払い出されるものを使用すればよいのでしょうか。

また,ネットワーク構成についてですが,Armadilloは装着したSIMカードを使用してインターネット接続し,パソコンはWi-Fiを使用しインターネット接続しています。
Wi-Fiは社内ネットワークは別の回線となり,ルーターはファイアウォール非対応(?)のようです。(設定個所が見当たりませんでした)

at_koseki

2023年7月6日 18時34分

古関です。

> 記載いただいた結果を参考に,コマンドプロンプトで入力してみましたが,以下のように表示されました。
> The system cannot find the file specified
scpコマンドがインストールされていないか、PATHが通っていないのではないでしょうか。
PCにWinSCP等のツールをインストールして使うとどうなるでしょうか。

> ご確認いただいたコマンドについてですが,[port]と[hostname]は
> オンデマンドリモートアクセスを作成した際に払い出されるものを使用すればよいのでしょうか。
はい。SORACOM Napterから払い出された数値を入力してください。

> また,ネットワーク構成についてですが,Armadilloは装着したSIMカードを使用してインターネット接続し,パソコンはWi-Fiを使用しインターネット接続しています。
> Wi-Fiは社内ネットワークは別の回線となり,ルーターはファイアウォール非対応(?)のようです。(設定個所が見当たりませんでした)
Wi-FiルーターのWAN側はどのようになっているのでしょうか。
おそらく、インターネット側からセッションが開始される通信はPCとは直接できない構成になっていませんでしょうか。

Armadilloでscpコマンドを実行するのであれば、インターネット側からPCまで到達するように
ネットワークを組まなければなりません。

PCからscpコマンドを実行する方がハードルが低そうです。

at_koseki

2023年7月6日 19時40分

古関です。

> The system cannot find the file specified
> scpコマンドがインストールされていないか、PATHが通っていないのではないでしょうか。

ごめんなさい、指定されたパスが見つからないえらーなので、
おそらくSCPコマンドはインストール済みで実行できており、
引数でしているファイルのパス指定が間違っているのだと思います。

実行したコマンドとそのログをいただけますか。

keiko-502

2023年7月10日 9時41分

ご連絡遅くなっており申し訳ございません。

コマンドの入力ミスでC:\Users\XXXXX>scp -P [port] atmark@[hostname]:/home/atmark/aaa.txt \Users\XXXXX\Desktop
の-Pを小文字で入力しており,これを大文字で入力したところ,ファイルがダウンロードできることを確認しました。

この方法は,コマンドプロンプトからの入力ですが,これをArmadillo側で実行することは可能でしょうか。

なお,最終的には,SORACOM API,python Flaskを使用したWebアプリを作成し,Webアプリ上でArmadillo内のファイルダウンロード,ダウンロードしたファイルの編集,Armadilloに編集したファイルのアップロードを完結するシステムを作成したいと考えています。

at_koseki

2023年7月10日 11時37分

古関です。

> コマンドの入力ミスでC:\Users\XXXXX>scp -P [port] atmark@[hostname]:/home/atmark/aaa.txt \Users\XXXXX\Desktop
> の-Pを小文字で入力しており,これを大文字で入力したところ,ファイルがダウンロードできることを確認しました。
できて良かったです!

> この方法は,コマンドプロンプトからの入力ですが,これをArmadillo側で実行することは可能でしょうか。
Armadllo側でSCPコマンドを実行したいという意味でしょうか?
技術的にはできますが、PC側にopensshサーバーを立てる必要があるのと、
インターネット側からPCにアクセスできるようにしないといけないので、
そこそこネットワークの構築が手間です。
※ PC側も、Armadilloと同じようにSORACOM Napterのようなことをして、リモートアクセスをできるようにしないといけない。

> なお,最終的には,SORACOM API,python Flaskを使用したWebアプリを作成し,
> Webアプリ上でArmadillo内のファイルダウンロード,ダウンロードしたファイルの編集,
> Armadilloに編集したファイルのアップロードを完結するシステムを作成したいと考えています。
SCPでArmadillo上のファイルのダウンロードとアップロードができればよいのですね。

構築したいシステム構成が良く分かっていないのですが、
WebアプリはPC(サーバーまたは、クラウド等), Armadilloのどちらで動かすのでしょうか?

前者であれば、
PC側(サーバー、クラウド)で実行するSCPコマンドのsrcとdstを逆にすれば、
アップロードもダウンロードもできますが、それで目的は達成できない状況でしょうか?
---------------------------------------------------------------
以下、全てPC上で実施

ArmadilloからPCにaaa.txtをダウンロード
scp -P [port] atmark@[hostname]:/home/atmark/aaa.txt \Users\XXXXX\Desktop

※PCにダウンロードしたaaa.txtを編集

PCからArmadilloにaaa.txtをアップロード
scp -P [port] \Users\XXXXX\Desktop\aaa.txt atmark@[hostname]:/home/atmark/
---------------------------------------------------------------

keiko-502

2023年7月11日 17時13分

お世話になっております。
scpコマンドのsrcとdstを逆にし,コマンドプロンプト上で入力することで,PCからArmadilloにファイルをアップロードできることは確認できました。

webアプリについてですが,webアプリを動かすのは,サーバーPCとなります。
サーバーPCで起動したwebアプリに対し,顧客(クライアントPC)はブラウザからIPアドレスを入力してアクセスします。
webアプリ上では,SORACOM APIを使用してArmadilloにSSH接続するためのオンデマンドリモートアクセスを作成します。
そこで払い出されるホスト名とポート番号を使用してArmadilloにSSH接続します。
Armadillo内には,配下のデバイスを管理するデータをファイル(txt/csv)で保存しており,デバイスの登録情報変更時に当該ファイルを編集するためArmadilloからダウンロードしたいと考えています。
顧客にコマンドプロンプト上でコマンド入力作業はハードルが高いと考えており,できるだけ簡潔に操作できるよう,webアプリ上でボタンクリックしてファイルのダウンロード/アップロードを行えるようにしたいのです。
SORACOMの方でも,ご相談させていただき,SORACOM Napterを使用し,ArmadilloとSSH接続する方法を案内されたため,そこからこのような方法での運用を検討しているところでした。

at_koseki

2023年7月12日 12時38分

古関です。

詳しい説明ありがとうございました。
ご説明の構成であればArmadillo側でSCPコマンドの実行はしなくても良いのではないでしょうか。
全て、サーバーPC側によるSCPコマンドの実行でdownload/upload実現できそうです。

・SORACOM APIでArmadilloをリモートアクセス可能にする
・WebアプリからSSHログイン、Armadillo側のファイル一覧情報等を取得 ※設定ファイルのPATHが固定であれば不要
・WebアプリからSCPコマンド実行しArmadilloからファイルをダウンロード
・クライアントPCにはブラウザーの機能でファイルをダウンロードしてエディタ編集し、
 クライアントPCからWebアプリへのファイルアップロード機能を作ってアップロードする
 または、Webアプリに設定ファイル表示・編集機能を付けてもよい
・WebアプリからSCPコマンド実行しArmadilloへ編集したファイルをアップロード