chromeOSで開発する準備(続き)
前記事の続き記事になります。
chromeOSでローカルにdocker環境を作る - ポエム
前回は、chromeOSにdocker環境を作るところにやりました。
今回は、chromeOS上のエディタでコンテナ上のファイルを編集する方法です。
エディタは、私の場合は、Caretというsublimeライクなエディタを使うことにしました。
VSCodeなどのIDEも使えるので、使いたい方は以下のURLから環境構築してもいいかもしれません。
reddit: the front page of the internet
ただ、VSCodeは不安定であるらしいという情報や日本語入力の準備や日本語キーバードだとキーバインドの設定とかややこしんじゃないかという不安や私の場合16GBしか容量がないということを考慮すると、
Caretというエディタで十分だと判断しました。
まずはCaretをインストールします。
chrome storeでcaretという検索してインストールしてください。
### 20190227 追記 ###
以下の内容ではSFTPでコンテナとchromeOSをmountしてますが、
そんあことしなくても
chrome://flagsを開き、Crostini Filesをenabledにすれば、File AppからLinux Appを開くことができることがわかりました。
そのため、以下内容は参考にしなくてもよいと思います。
###################
次に、chromeOS上のローカルのFile Appとコンテナ上をSFTPでつなぎます。
Caretのwikiページに書かれているSFTP Network folderというアプリを使います。
(Secure Shellとかでも代用可能らしいです。やったことないのでわかりませんが。)
remote file systemをSTFPプロトコルを通してchromeOSにmountすることができます。
Git SFTP Drive support · thomaswilburn/Caret Wiki · GitHub
まずは公開鍵・秘密鍵を生成しましょー。
コンテナ上で、
$ mkdir ~/.ssh $ chmod 700 ~/.ssh $ cd ~/.ssh $ ssh-keygen -t rsa $ cat id_rsa.pub >> authorized_keys $ chmod 600 authorized_keys
上の操作、ssh-keygenで公開鍵と秘密鍵を生成して、
公開鍵をauthorized_keysというファイル名で作成しています。
以上ができましたら、秘密鍵をchromeOS上にもっていきましょー。
これは色々方法があると思いますが、私の場合は、
$ cp ~/.ssh/id_rsa ~/
としてFile AppのLinuxファイルからダウンロードにdragしてmoveしてきました。
以上が終わりましたら、
SFTP Network folderというアプリを開き、
私の場合ですと
Sever name : 100.115.92.203(コンテナのIP)
Port number : 22
Mount path : 100.115.92.203:22/home/tani
Display Name : penguin
Username : tani(ここは各々ユーザー名)
Authentication type : Public key
Private key : (上記のid_rsaをコピペ)
これでやってみた。
Server is not accessibleと表示されました。。
sshできるかどうかまず確認してみますかってことで。
croshタブからshellコマンドでたたき
$ ssh tani@100.115.92.203 -i id_rsa -p 22 ssh: connect to host 100.115.92.203 port 22: Connection refused
エラーだね。
そもそもコンテナ側のsshポートってどこ空いてんだ。
ssh動いてんのかってことでコンテナ側を見に行きます。
$ sudo systemctl status sshd ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: inactive (dead) $ sudo systemctl start sshd.service $ sudo systemctl status sshd.service ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: inactive (dead) Condition: start condition failed at Wed 2019-01-02 13:32:36 UTC; 4s ago └─ ConditionPathExists=!/etc/ssh/sshd_not_to_be_run was not met
/etc/ssh/sshd_not_to_be_runが邪魔らしいのでrenameしときます。
そんでrestartです。
$ sudo mv /etc/ssh/sshd_not_to_be_run /etc/ssh/sshd_not_to_be_run.bk $ sudo systemctl restart sshd.service $ sudo systemctl status sshd.service ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-01-02 14:44:32 UTC; 2s ago Process: 1028 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 1029 (sshd) Tasks: 1 (limit: 4915) Memory: 1.1M CPU: 73ms CGroup: /system.slice/ssh.service └─1029 /usr/sbin/sshd -D Jan 02 14:44:32 penguin systemd[1]: Starting OpenBSD Secure Shell server... Jan 02 14:44:32 penguin sshd[1029]: Server listening on 0.0.0.0 port 22. Jan 02 14:44:32 penguin sshd[1029]: Server listening on :: port 22. Jan 02 14:44:32 penguin systemd[1]: Started OpenBSD Secure Shell server.
できました。
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk $ sudo vim /etc/ssh/sshd_config Port 20 PermitRootLogin no PubkeyAuthentication yes PasswordAuthentication no $ sudo systemctl restart sshd.service
に変更する。
これで
chromeOS上のshellから
$ ssh tani@100.115.92.203 -i ~/.ssh/id_rsa -p 22 Linux penguin 4.19.4-02480-gd44d301822f0 #1 SMP PREEMPT Thu Dec 6 17:48:31 PST 2018 aarch64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. tani@penguin:~$
SSH接続できました。
あとはSFTPの前に記述している内容と同じ内容でmountすると成功します。
それでCaretからプロジェクト開けるようになります。晴れて開発スタートできまーす!
もちろんリモートで開発サーバー揃えて、そこにSFTP接続して開発でも良いと思います。
ちな、コンテナ上のプロセスみると、
root 92 0.0 0.1 10392 5252 ? Ss 13:22 0:00 /usr/sbin/sshd -D -f /dev/.ssh/sshd_config
というものがあり、なんかSFTP用のsshdプロセス立ってるっぽい。
私は詳しくわかりませんが、これを使ってうまくできるかもです。
今回は以上となります。