
私のリモートコンピュータの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.service
agetty
logind
システムの問題screen
とtmux
システム関連の問題。
もちろん、前述のように、カーネルの仮想端末サブシステムとConSpyをscreen
システムのサーバーとクライアントの一部として使用していますtmux
。screen
または使用に切り替えることができますtmux
。
screen
問題は、andtmux
がsystemdとうまく相互運用されていないことです。これは既知のシステム問題であり、意図的に設計されています。 systemdからサービスとして直接管理されているログインセッションのサーバー部分を起動するとscreen
(サービスが実行してモードでSSHを実行したときにサービスが実行するように)、tmux
autovt@ttyN.service
sshd@connection.service
Accept=yes
ログアウト時にサーバーをシャットダウン、設計上、サービスが終了すると、サービスに残っているすべてのプロセスが終了し、これらのログインセッションサービスからログアウトすることも終了したと見なされます。
世界には、変更を含むこのデザインの競合に使用できるさまざまな回避策があります[email protected]
。screen
tmux
それ自体ホスティングサービスを入力してください。したがって、起動screen
またはtmux
ログインして対話的に実行する必要はありません。 systemdを使用すると、開始および停止された本格的なサービスで起動できます。
この時点で、バックグラウンドサーバープロセスに含まれているか派生したものは、せいぜい過度にエンジニアリングされましたscreen
。tmux
みんなこれは systemd が管理screen
したりtmux
サービスが実行する必要がある作業であり、サーバーを「保護」する必要はありません。 (ちなみにscreen
systemdtmux
の問題は終わったらもっとあります。インタラクティブなログインセッションでプロセスを安全かつ確実に「デーモン化」することが事実上不可能な理由の例を見てください。 )
代替
選択肢について言及したので、ここに別の選択肢があります。 noshには代替手段があります。ユーザースペース仮想端末システムsystemd で nosh サービスマネージャとその下の一部の nosh とサービスを実行し、SSH ログインセッションを介してシミュレートされた端末と通信できます。 (現在のようにデバイス名を直接接続しないようにConSpyを調整すると、vcsa準拠のディスプレイバッファを使用できるため、ConSpyを使用してシミュレートされた端末を表示することもできます。)「デーモン化」せずに1つの操作のみを実行します。これはターミナルであり、擬似ターミナルのメインエンドとシミュレートされたディスプレイと入力の間にあります。ttylogin@vcN-tty
terminal-emulator@vcN
console-ncurses-realizer
console-terminal-emulator
これにはいくつかの側面の利点があります。カーネル空間設計の制約によって制限されないため、カーネルに組み込まれたエミュレータプログラムよりも完全なDEC VTエミュレーションを提供します。一般的なDEC制御シーケンスを使用して、端末のサイズを必要に応じて調整できます。端末は安全のために自動的にリセットされ、ログアウト後すぐ次回ログインが呼び出されるよりも
追加読書
- https://unix.stackexchange.com/a/194218/5132
- レナートポータリング(2011-05-19)。[バグ?] systemdで画面が正しく動作しません。。 systemd - 開発。
- 「systemdを使用して自動的に起動します」。マルチプレクサ.アーチウィキ。
- ポール・イーグルトン(2014-11-06)。 openssh: systemd 接続が失われたときに screen セッションが終了するのを防ぎます。。ヨークツープロジェクト。
- SSH 接続を切断すると、tmux セッションが終了します。
- ジョナサンデボインポラード(2015)。「systemdでnoshサービス管理を実行する」。 Debian バイナリパッケージ。何かを食べる。 JdeBPソフトウェア。
- ジョナサンデボインポラード(2015)。控えめな管理者のための設置方法 何かを食べる。 JdeBPソフトウェア。
- ジョナサンデボインポラード(2015)。「ユーザー空間仮想端末」。 スナックガイド。 1.20。何かを食べる。 JdeBPソフトウェア。
- ジョナサンデボインポラード(2015)。ユーザー空間仮想端末のツアー 何かを食べる。 JdeBPソフトウェア。
- https://askubuntu.com/a/674147/43344
- ジョナサンデボインポラード(2015)。「継承と悪魔の誤り」。"service"コマンドに問題はありません。。何かを食べる。 JdeBPソフトウェア。