リモート接続したRapsberry Piでプログラミングをしていると、Vimやnanoなどのエディタを使って編集するよりも、直感的でわかりやすいプログラムエディタを使いたいと思いませんか?
それと同時にエディタでプログラミング→実行→修正の繰り返しが面倒ではありませんか?
Atomというエディタを用いれば、リモート上のファイルを簡単に編集でき、かつ実行までやってのけることができます。覚えてしまえば便利なんだけど、使い方にはコツが必要で、かつ導入が大変なので紹介します。
- WindowsのマシンへAtomエディタをインストール ※Mac,Linuxも可
- AtomからSFTPを用いてRaspberry Pi上のファイル(今回はPythonスクリプト:test.py)を編集する
- Atom上のコンソールからRaspberry PiへSSH接続し、test.pyを実行する
さらっと流れを書きましたが、Atom自体はSFTPやSSHの機能がありません。有志が作成したAtom用パッケージをインストールすることでそれらを使えるようにセットアップします。
Atomのウェブサイト(https://atom.io)からソフトウェアをダウンロードし、インストールします。
Atomを起動し、最初に聞かれるAtom用プロトコルハンドラ(URI handler)の登録はYesを選択。目的のパッケージを追加インストールするため、File→Settingへと進みます。
Install項目を選択し、検索フォームから以下のパッケージをそれぞれ検索し、インストールします。
- japanese-menu(Atomの日本語化を行う)
- ftp-remote-edit(Raspberry Piなどの端末へSFTP接続し、ファイル編集を行う)
- platformio-ide-terminal(外部ターミナルを利用可能にする)
ここまで終わるとAtomが日本語化され、細かい設定まで手が出せると思います。ちなみにインストール済みのパッケージはSetting一覧の「Packages」で見ることができます。インストールされているパッケージが多いとAtomの起動が遅くなるため、不必要なデフォルトパッケージはここで無効化しておくと良いでしょう。
リモート上のファイルを編集するためSFTPで接続するホスト先の設定を行います。
メニューから「パッケージ」→「FTP-Remote」→「Edit Servers」と進みます。
初回設定時は暗号化パスワードを新しく設定する必要があります。というのも、この先で入力していくSFTPホストのパスワード等を、平文ではなく、暗号化して保管するためです。次回のFTP-Remote設定時はパスワードを入力しないと設定画面が開けないようになっています。
サーバ設定画面が開くので新規登録のNewを押し、サーバ名、接続先のIPアドレス、ユーザー名、SSHのパスワードを入力します。忘れずに「Use sftp(ssh) connection」のボックスを選択してください。でないと、FTP接続になってしまいます。パスワード認証ではなく、公開鍵認証を用いてSSH接続する場合は、秘密鍵ファイルのパスを入力します。
サーバへの接続は、メニューから「パッケージ」→「FTP-Remote」→「Toggle」を選ぶと、登録したサーバ名が表示されたサイドバーが出てきます。サーバ名をクリックすると、SFTP接続され、ディレクトリがツリー状に表示されます。
では、ここでテストファイル「test.py」をホームディレクトリに新規作成し、Hello world!を表示するpythonスクリプトを書きました。
保存ボタン(もしくはCtrl+s)を押すと、接続先へ自動的に上書き保存されます。保存が完了すると右上にポップアップが表示されて分かりやすいですね。
さて、このtest.pyを実行するには端末にSSHログインする必要がありますが、Atom内部では行うことができませんが、外部ターミナルを用いることで解決できます。
Windowsの場合外部ターミナルは”Windwos PowerShell”が立ち上がります。Windows PowerShellはデフォルトではSSHが使えませんので、こちらを参照にSSHを導入してください。MacやLinuxの場合は付属のターミナルを用いたSSH接続となるため、準備は不要です。
準備が整っていればあとは簡単です。Atomエディタの左下にある+ボタンを押す(もしくはAlt+Shift+T)と、WindowsではPowerShell、Linuxではターミナルが立ち上がります。
あとはSSHで端末へログインし、test.pyを実行するだけです。
※上のGIF動画ではエイリアスを利用してSSHコマンドを実行しています。
プログラムの修正が必要であれば、上のウィンドウで編集して、下のターミナルで実行だけで良いので、とても楽にプログラミングができますね。さらにショートカットキーを駆使すればマウスを使わずに一連の流れができます。
本ページを拝見し、これを元にラズパイをAtomからssh通信できるようにするところまでは可能になりました。ありがとうございます。
しかし、どうやら”sudo” コマンドのみが反応しないようで、少し困った事態になっております。
現在の環境ではこれは不可能になってしまったのでしょうか。
尚、本ウェブサイトの記載から外れるようなインストレーション等は行っていないつもりです。
どうか知恵をお貸しいただけませんでしょうか。
コメントありがとうございます。
標準的なセキュリティ設定を行ったラズパイへのSSHリモートログインでは”sudoが実行できない”は再現できませんでした。
ところで、SSHでログインした先で”sudo”を試みた際に表示されるエラーメッセージは「sudo を実行するには tty がなければいけません。すみません」という内容でしょうか?
調べてみると、一部のLinuxディストリビューションではSSHを使ったsudoが初期設定で実行できないようになっているものがあるようで、以下のサイトによればCentOS系やRHEL系が対象のようです。
参考 https://orebibou.com/2017/06/sudoで覚えておくと便利な設定・使い方/#cronsshsudo
その場合は、二通りの解決方法があるようです。
①sshコマンドに -tオプションを付与する
②リモートログイン先の/etc/visudoファイルの一部を編集する
参考 https://i-think-it.net/linux-remote-sudo-not-execute-correspondence/
一度、どちらかをお試しいただくことをお勧めいたします。