
CS割り当てのために仮想マシンを受け取りました。 Gnome Boxesで開きましたが(VMイメージをダブルクリックするだけです)、そこにコードを書くのではなく、ローカルマシンでコードを書いて、仮想マシンでSSHを介してコンパイルしたいと思います。仮想マシンは.ova拡張子を持ち、Boxes PreferencesにBroker QEMU Session、Display Protocol SPICEを表示します。 SSHのリモートIPとして何を使うべきですか?仮想マシンに追加の設定が必要ですか?どのように追加する必要がありますか?
答え1
最も簡単な方法は、リバースSSHトンネルを使用することです。
仮想マシンの内部で実行します。
ssh -NT -R 2222:localhost:22 user@_gateway
user
ホストのユーザー名はどこにありますか?
これで、次のコマンドを使用してホストから接続できます。
ssh -p 2222 guestuser@localhost
ユーザーguestuser
名はguestです。
起動するたびにゲストでコマンドを実行したくない場合は、autossh
サービスで使用できます。
答え2
GNOMEボックスはどのような機能を提供しますか?
GNOME Boxes は Open Virtualization Format ファイルをダブルクリックすると自動的にインポートされます。
GNOME BoxesはゲストをSSHに公開しません。持てると予想されます。SPICEゲストサプリメント以下を行うには、ゲストにインストールしてください。
- ホストとゲスト間の共有クリップボードを使用したテキストのコピーと貼り付け
- ファイルをゲストにドラッグアンドドロップします。
このアプローチでは、GNOMEを使用している経験豊富なユーザーも直感的で理解できなければなりません。このアプリの目標:
しかし、仮想管理者仮想マシン管理ソフトウェアとして非常に優れたタスクを実行し、システム管理や仮想マシンに適しています。一方、Boxesは、新しいオペレーティングシステムまたは自分の好むオペレーティングシステムの新しい(おそらく不安定な)バージョンを試すことができる非常に安全で簡単な方法を望む一般的なデスクトップエンドユーザーを対象としています。リモートコンピュータに接続します(ホームオフィス接続は一般的なユースケースです)。したがって、Boxesは仮想マシンのチューニングのためにvirt-managerが提供する多くの高度なオプションを提供しません。代わりに、Boxesは、ユーザーの入力がほとんどなくボックス内ですぐに機能するようにすることに焦点を当てています。
つまり、Boxes は主に virt-manager プロジェクトと次の形式で多くのコードを共有します。ライブラリ仮想マシン、リボ情報そしてゲーム。
参考までに3年前に無効になった提案Boxes でポート転送を実装します。
さまざまなツールを使用してください
SSH経由でゲストに接続する必要がある場合は、作業に適したツールを使用して設定を構成しvirt-manager
、仮想ネットワーク「(ダイナミックまたはワイヤレスインターフェイスを備えたホストの場合)または」LANへのブリッジ(静的有線インタフェースを持つホストの場合)。一方、ボックスはuser
モードネットワークを使用してゲストを設定します。ユーザースペースSLiRPスタック。必要に応じvirt-manager
て、既存の設定を変更してBoxesでゲストを引き続き使用できます。私はこれを自分でやったことがないので、それを使用することを選択した場合はvirt-manager
別のチュートリアルが必要です。
フォワードポート
もう1つの方法は、QEMUにホストのポートをゲストのポートに転送するように指示することです。変更は無視され上書きされるため、テキストエディタを使用してゲストの設定ファイルを変更することはできません。visrh
パッケージ内のlibvirt-clients
(少なくともDebianでは)利用可能なものを使用して変更できます。ボックスのゲストプロパティの[システム]タブにあるトラブルシューティングログの2行目でドメイン名を確認できます。または、~/.config/libvirt/qemu
たとえば、マイインストールでインストールされたゲストコンピュータに関連付けられているドメイン名は「boxes-unknown」です。このシステムの構成を編集するには、次のように入力します。
virsh edit boxes-unknown
マイインストールのゲスト用の既存のネットワーク構成:
<interface type='user'>
<mac address='52:54:00:3d:69:49'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
残念ながら、ホストからゲストへのポート転送を追加するためにXMLを変更することはできません。この機能は利用できませんDomainXML形式によって使用されますlibvirt
。2013年に送信されたEメールこの機能の提案が失敗したことを示します。したがって、ゲスト仮想マシンを起動するときにQEMUに渡す関連パラメータを指定する必要があります。既存のネットワークインタフェースは変更できないため、これを説明するXML部分を削除して生成を防ぐだけです。代わりに、QEMUに渡された引数にコピーする必要があります。
トラブルシューティングログによると、私の設定では、上記のネットワーク設定は次のパラメータに対応しています。
-netdev user,id=hostnet0 \
-device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:3d:69:49,bus=pci.0,addr=0x3 \
でパラメータの意味を確認できますman qemu-system-x86_64
。
自動構成ではカスタムQEMUパラメーターを考慮しないため、バスとアドレスをコピーしたくありません。これにより、アドレスの割り当て時にクラッシュが発生し、クライアントが起動しなくなる可能性があります。代わりに、カスタムネットワークインターフェイスに自動的に割り当てることを許可します。
デバイス名を覚えておいてください。たとえば、別に指定しないと、デフォルトで設定されているrtl8139
と思います。e1000
<domain type='kvm'>
QEMUコマンドライン要素のXML名前空間を含むようにタグを変更する必要があります。
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
その後、閉じるタグの前にQEMUコマンドラインパラメータを追加できます</domain>
。次の例では、ssh localhost -p 2222
ホストでポート転送を実行し、ホストhttp://localhost:8080
のブラウザからWebサーバーにアクセスできるようにポート転送を追加しました。設定と設定に合わせてこの例を変更する必要があるかもしれません。必要に応じてhostfwd
パラメータ構文をから読むことができますman qemu-system-x86_64
。
<qemu:commandline>
<qemu:arg value='-device'/>
<qemu:arg value='rtl8139,netdev=hostnet0'/>
<qemu:arg value='-netdev'/>
<qemu:arg value='user,id=hostnet0,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80'/>
</qemu:commandline>
対応するQEMUパラメーターは次のとおりです。
-device rtl8139,netdev=hostnet0 \
-netdev user,id=hostnet0,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80
これから上記のXMLを生成することは難しくありませんが、また、使用することができます virsh domxml-from-native qemu-argv
あなたのためにカスタマイズされました。
ポートを転送するために必要なすべてのようです。QEMU Wikiによると。
ゲストにも同様のアプローチを使用できますvirt-manager
。https://unix.stackexchange.com/a/519067/423679
virsh
エラーが発生した場合は、ファイルを保存するときにXML検証をスキップしないでください。まず構文を修正してみてください。場合に備えて、構成ファイルのバックアップを保持することを忘れないでください。