ChromeOS/vsh
表示
< ChromeOS
vsh - Vsock SHell
[編集]はじめに
[編集]vshは、vsockを介して操作されるリモートシェルです。sshのようなものですが、最初の「s」を「v」に置き換えたものです。
なぜvshを使うのか?
[編集]SSHは、ネットワークを介してリモートマシンにシェルを取得するための事実上の標準です。これは、デスクの下のマシンやクラウドのVMにとって多くの意味をなします。
SSHが提供する最も重要な機能は次のとおりです:
- ホスト認証により、正しいマシンと通信していることを確認します。
- ユーザー認証により、承認されたユーザーのみがサインインし、自分自身としてのみサインインします。
- 暗号化により、2つのマシン間の通信を盗聴することを防ぎます。
vshは1つのユースケースに焦点を当てています:同じマシン上のVMに接続します。これにより、要件を大幅に簡素化できます。
- ホスト認証はvsockによって提供されます。VMはvsockのコンテキストIDを偽装できないため、IPとは異なります。vsockはマシンローカルなので、MitM攻撃の心配はありません。
- ユーザー認証は必要ありません。vshはホストからゲストへのみ使用され、ホストは常により特権があると見なされます。
- 暗号化は必要ありません。vsockはルーティングできないため、トラフィックはホストとゲストのメモリ間を直接移動します。ホストカーネルの脆弱性がない限り、VMは他のVM向けのトラフィックを観察することはできません。
暗号化の必要がないため、vshの設定は簡単で、VMプロジェクトに簡単に統合できます。vsockはゲスト側の構成を必要としないため、ゲストOSにネットワークを構成する必要はありません。
特長
[編集]vshは次のことができます:
- 対話型シェル(bashなど)およびワンショットコマンドの実行ができます。
- 対話型と非対話型の使用方法を検出できます。これにより、バイナリデータをvshを介してパイプ処理したり、stdoutとstderrの出力を別々に処理したりできます。
- ゲストサイドプロセスからの終了ステータスを転送できます。
- 特定のシグナルを転送できます。SIGHUP、SIGINT、SIGQUIT、またはSIGTERMを送信すると、シグナルがリモートプロセスに転送されます。これは、Tastなどの非対話環境で、ゲストサイドプロセスをきれいに終了させるために役立ちます。
使用例
[編集]- vsock cid 3でVM上のシェルを起動する。
- 名前がfooのVMでシェルを起動する。これには、vm_concierge経由でVMが起動されている必要があります。
- 名前がfooのVMでルートシェルを起動する。
- termina VMでlxc listを実行する。
- ホストファイルfooをpenguinコンテナの/barに書き込む。
- penguinコンテナからホストのbarに/fooファイルを書き込む。
vshのcrosvmインスタンスのセットアップ
[編集]まず、ゲスト側にvshd実行ファイルが必要です。termina dlcがその1つの取得方法です。vshdはvm_tools.imgに含まれています。
次に、crosvmを--cid=3およびvm_tools.imgとともに起動します。
最後に、ゲストで次のコマンドを実行してvshdを起動します。
これにより、vshのcrosvmインスタンスが正常にセットアップされます。