エージェント転送を使用して SSH に接続したときにプロンプ​​トが表示されない

エージェント転送を使用して SSH に接続したときにプロンプ​​トが表示されない

現在、私は自宅で仕事をしており、本番サーバーに接続する必要があります。職場のセキュリティ ポリシーでは、VPN クライアントが本番インスタンスに接続することを許可していません。そのため、エージェント転送は開発サーバー (アクセス可能) 経由で構成できると考えました。これは許可されているからです。

これを実行するには、まず開発サーバーのエージェント転送を有効にします。

  1. 開発サーバーエントリにコンピュータにForwardAgent yes追加しました~/.ssh/config
  2. 私はeval 'ssh-agent'SSHエージェントを起動するために走りました
  3. 私はエージェントにSSHキーを追加しましたssh-add ~/.ssh/id_rsa
  4. 私は開発サーバーに接続しましたssh -A <devserver>
  5. 開発サーバーで、本番サーバーに接続しようとしました。ssh -T me@<prodserver>

その後、本番サーバー上でコマンドを実行できるようになりました。ただし、実際の bash プロンプトは表示されません。

bash プロンプトがありません

プロンプトが表示されるようにするために何かできることはありますか?

ここに画像の説明を入力してください

答え1

最後のステップでは、オプションsshなしで実行します-T

-T      Disable pseudo-terminal allocation.

この-Tオプションを使用すると、実際には TTY の割り当てが無効になり、シェルが使用できなくなります。

mtak@rubiks:~/bla(develop)$ ssh gen1
THIS IS A PRIVATE COMPUTER SYSTEM. Unauthorized access prohibited.
You have mail.
Last login: Tue Mar 10 10:45:25 2020 from vpn-int-2.int.mtak.nl
mtak@gen1:~$ logout
Connection to gen1 closed.

mtak@rubiks:~/bla(develop)$ ssh -T gen1
THIS IS A PRIVATE COMPUTER SYSTEM. Unauthorized access prohibited.
You have mail.
date
ma mrt 16 16:12:53 CET 2020

答え2

私は本番サーバーに接続しようとしましたssh -T me@<prodserver>

-Tオプションを使用しているため、プロンプトが表示されませんsshにターミナルモードを無効にするように指示しました(tty 割り当て)。

tty の存在によって、すべてのプログラムは、対話的に実行されているか (つまり、ターミナル/キーボードに接続されているか)、ファイルまたはパイプからコマンドが供給されているかを判断します。後者の場合、つまり「バッチ」モードでは、シェルがすべてのプロンプトを無効にするのが普通です。「ls」などのツールは、洗練されたフォーマットや色付きの出力を失います。

関連情報