TTYテキスト仮想コンソールを作成する方法は?

TTYテキスト仮想コンソールを作成する方法は?

私のリモートコンピュータのLinuxバージョン(Kali v2.0)には一種のバグがあると思います。TTYテキストコンソールを起動できません私がマシンに座ってを押すまでCtrlAltFn

リモートでログインするために使用します。SSHそのコンピュータに接続し、TTY nを使用してアクセスしました。スパイ、たとえば、次のようになります。

# conspy 6

私のSSHクライアント(この場合はPutty)をTTY6に送信します。

ただし、TTYコンソールが起動しない限り黒い画面カーソルが点滅します。
だからまず次のように送信します。

# agetty 38400 tty6 &

その後、TTY6が起動し、今回はログインして対話できましたが、次のような奇妙なメッセージが表示されました。

Kali GNU/Linux 2.0 kali tty6
kali login: luis
Password:
Linux kali 4.0.0-kali1-686-pae #1 SMP Debian 4.0.4-1+kali2 (2015-06-03) i686

The programs included with the Kali GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Kali GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
-bash: cannot set terminal process group (3662): Inappropriate ioctl for device
-bash: no job control in this shell

このコマンドは正しいアプローチagettyですか?TTYの生成テキスト仮想コンソール?

ベストアンサー1

これは意図的に設計されています。

私の考えでは、私のリモートコンピュータのLinuxバージョン(Kali v2.0)にはある種のバグがあるので、私のTTYテキストコンソールは、私がコンピュータにローカルに座っているときにのみ起動します。CtrlAltFn

これは間違いではありません。これがsystemd Linuxが設計どおりに機能する方法です。カーネル仮想端末のTTYログインサービスは、logindフォアグラウンドに切り替えると要求に応じて開始されます。リモートでマシンにアクセスしてConSpyを使用すると、もちろん次のことができます。いいえカーネル仮想端末をフォアグラウンドに切り替えます。

これagettyは、TTYテキスト仮想コンソールを生成する正しい方法ですか?

はい、いいえ。はい、これはゲッティ/ログインサービス。いいえ、それ自体は仮想端末を作成しません。いいえ、直接実行しません。

前述したように、logindこれを行います。各仮想端末には systemd というサービスがあります。これが実行されます。サービスを手動で開始するか、要求に応じて開始できます。autovt@ttyN.serviceagettylogind

システムの問題screentmuxシステム関連の問題。

もちろん、前述のように、カーネルの仮想端末サブシステムとConSpyをscreenシステムのサーバーとクライアントの一部として使用していますtmuxscreenまたは使用に切り替えることができますtmux

screen問題は、andtmuxがsystemdとうまく相互運用されていないことです。これは既知のシステム問題であり、意図的に設計されています。 systemdからサービスとして直接管理されているログインセッションのサーバー部分を起動するとscreen(サービスが実行してモードでSSHを実行したときにサービスが実行するように)、tmuxautovt@ttyN.servicesshd@connection.serviceAccept=yesログアウト時にサーバーをシャットダウン、設計上、サービスが終了すると、サービスに残っているすべてのプロセスが終了し、これらのログインセッションサービスからログアウトすることも終了したと見なされます。

世界には、変更を含むこのデザインの競合に使用できるさまざまな回避策があります[email protected]screentmuxそれ自体ホスティングサービスを入力してください。したがって、起動screenまたはtmuxログインして対話的に実行する必要はありません。 systemdを使用すると、開始および停止された本格的なサービスで起動できます。

この時点で、バックグラウンドサーバープロセスに含まれているか派生したものは、せいぜい過度にエンジニアリングされましたscreentmuxみんなこれは systemd が管理screenしたりtmuxサービスが実行する必要がある作業であり、サーバーを「保護」する必要はありません。 (ちなみにscreensystemdtmuxの問題は終わったらもっとあります。インタラクティブなログインセッションでプロセスを安全かつ確実に「デーモン化」することが事実上不可能な理由の例を見てください。 )

代替

選択肢について言及したので、ここに別の選択肢があります。 noshには代替手段があります。ユーザースペース仮想端末システムsystemd で nosh サービスマネージャとその下の一部の nosh とサービスを実行し、SSH ログインセッションを介してシミュレートされた端末と通信できます。 (現在のようにデバイス名を直接接続しないようにConSpyを調整すると、vcsa準拠のディスプレイバッファを使用できるため、ConSpyを使用してシミュレートされた端末を表示することもできます。)「デーモン化」せずに1つの操作のみを実行します。これはターミナルであり、擬似ターミナルのメインエンドとシミュレートされたディスプレイと入力の間にあります。ttylogin@vcN-ttyterminal-emulator@vcNconsole-ncurses-realizerconsole-terminal-emulator

これにはいくつかの側面の利点があります。カーネル空間設計の制約によって制限されないため、カーネルに組み込まれたエミュレータプログラムよりも完全なDEC VTエミュレーションを提供します。一般的なDEC制御シーケンスを使用して、端末のサイズを必要に応じて調整できます。端末は安全のために自動的にリセットされ、ログアウト後すぐ次回ログインが呼び出されるよりも

追加読書

おすすめ記事