質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

841閲覧

Electronにおける任意のファイルのパスについて。

being0828

総合スコア4

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/04/26 15:08

前提・実現したいこと

初めての質問です。
JavaScript(Node.js,Electron)を最近学習しております。
文章で稚拙なところがありましたら申し訳ございません。

Linuxサーバー(RaspberryPi)にlsコマンドを投入するElectronアプリを作っています。
sshで公開鍵認証によるログインを行ったあと、lsコマンドを投入し画面上に表示させる機能を作りたいのですが、
起動時に後述のエラーメッセージが出力されました。
鍵ファイルを指定する方法がわからず、質問させていただきました。

誤っている箇所についてご教示お願いいたします。

発生している問題・エラーメッセージ

Uncaught (in promise) Error: config.privateKey does not exist at given fs path

該当のソースコード

javascript

1// sshlogin.js 2 3const Ssh = require('node-ssh'); 4 5async function main(sshIpaddress,sshUser,sshPrivateKey,sshPassPrase) { 6 const ssh = new Ssh(); 7 8 // 接続 9 await ssh.connect({ 10 host: sshIpaddress, 11 port: 22, 12 username: sshUser, 13 privateKey: sshPrivateKey, 14 passphrase: sshPassPrase 15 }); 16 17 // コマンド実行 18 let Res = await ssh.execCommand('ls', {options: {pty: true}}); 19 // HTML置き換え 20 document.getElementById("ls").innerHTML = Res.stdout; 21 22 // 切断 23 ssh.dispose(); 24} 25 26// 鍵が見つからない。★ 27main("IPaddr","Username","../key/id_rsa","PassPhrase");

試したこと

・process.cwd()でディレクトリのパスを確認しフルパスで指定するように試みましたが同一のエラーメッセージとなりました。
・デベロッパーモードよりkey/id_rsaが存在しているか確認しましたが、見つかりませんでした。

補足情報(FW/ツールのバージョンなど)

・バージョンは下記です。
node.js v12.16.2
electron@8.2.1
node-ssh@8.0.0

・ディレクトリの構成は下記となります。

Project/
├ node_modules/
├ src/
│ ├js/sshlogin.js
│ ├key/id_rsa
│ ├index.html
│ └main.js
│  
└package.json

・起動方法は下記です。
%npx electron src

以上、ご確認お願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

###自己解決しました。

下記の方法でファイルを見つけることができました。
※id_rsaは/src下に置きました。

javascript

1// fs読み込み 2const fs = remote.require('fs'); 3 4// フルパスの取得 5const appPath = remote.require('process').cwd(); 6const keyfile = "/src/id_rsa"; 7const keypath = appPath + keyfile;

javascript

1async function main(sshIpaddress,sshUser,sshPrivateKey,sshPassPhrase) { 2 const ssh = new Ssh(); 3 const sshPrivateKeyData = fs.readFileSync(sshPrivateKey, {encoding: 'utf-8'}); 4 5 // 接続 6 await ssh.connect({ 7 host: sshIpaddress, 8 port: 22, 9 username: sshUser, 10 privateKey: sshPrivateKeyData, 11 passphrase: sshPassPhrase 12 });

※補足

上記で鍵ファイルを指定することができたのですが、その後、下記のエラーでハマりました。
色々しらべたところ、ssh-keygenのデフォルトビットサイズで実行するとこのエラーになるようで、
4096にしましたところ無事にサーバから情報を拾うことができました。
(参考:https://github.com/SchoofsKelvin/vscode-sshfs/issues/162)

error while signing data with privateKey: error:06000066:public key routines:OPENSSL_internal:DECODE_ERROR

以上です。

投稿2020/04/27 19:41

being0828

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問