現在、私はこの標準を使用してnetcat -e /bin/sh
他のコンピュータにアクセスできるリモートシェルを提供しています。
しかし、問題は、このシェルが出力が制限されているためかなり悪いことです。たとえば、誤ったコマンドを送信すると、コンピュータはxxxxx
何も応答しませんが、コンピュータでは端末にエラーが表示されます/bin/sh: xxxxx: not found
。
シェルを使用してコンソールアプリケーションを起動すると、通常コンソールアプリケーションの出力はまったく表示されず、コンピュータでCtrlznetcatがシャットダウンされるため、シェルを通過できません。これはめちゃくちゃです。 SSHのように動作したいです(使用できません)。
/bin/sh
netcatで行ったように、すべてをパイピングするのではなく、端末にすべての出力を表示するカスタムアプリケーションを作成することは可能ですか?作成プロセスに関係なく、端末からテキストを取得することは可能ですか?
sshd
ボックスから起動してこれを行うことはできますかnetcat -e "ssh root@localhost"
? (私はこれを試しましたがうまくいかないようです)。
私はあらゆる種類の解決策を探しています。
答え1
「カスタムアプリケーション」を作成すると、telnet / sshが再実装されます。これは確かに可能ですが、必須ではありません。
ホストにsshd(またはtelnetd)がある場合は、たとえばnetcat-shellセッションでそれを開始してから、クライアント/usr/sbin/sshd -p <port> -D 2>&1
でssh -p <port> root@<host>
これを実行できます。 sshd にさらにオプションを追加する必要がある場合や、設定ファイルを生成してコマンドラインに提供する必要がある場合があります。/usr/sbin/sshd -f <config-file> ...
そうでない場合は、netcatセッションを使用してtelnetdまたはsshdをアップロードし、必要な環境/構成を設定した後、特定のポートで実行できます。
たとえば、stderrをstdoutにリダイレクトするラッパーをシェルの周りに作成することもできます。/bin/sh 2>&1
これにより、netcatセッションでstderrを表示できますが、「実際の端末」機能は提供されません。
別のオプションは、DISPLAY=<client>:0 xtrem
ホストにxtermまたは同等の機能を持ち、クライアントにXサーバーを配置することです。