デスクトップ上の単一のsshコマンドからリモートサーバーのスクリーンセッションを起動できるようにしたいのですが。ただし、画面には端末が必要なようですが、sshを介してコマンドを実行するときには利用できません。
だから明らか
ssh [email protected] screen "tail -f /var/log/messages"
(例として)機能せず、
Must be connected to a terminal.
Sshが画面下でコマンドを起動して、後でログインして手動で起動した画面セッションに接続するのと同じように接続できるようにしたい。
Sshに-tオプションを使用してみてください
ssh -t [email protected] screen "tail -f /var/log/messages"
Man sshから
-t疑似tty割り当てを強制します。これは、リモートマシン上でarbi- の画面ベースのプログラムを実行するために使用できます。たとえば、メニューサービスを実装する場合など、 は非常に役立ちます。複数の-t オプションは、sshにローカルttyがない場合でも、tty割り当てを強制します。
以下を使用できます。
ssh root@Host screen -m -d "tail -f /var/log/messages"
これにより、コマンドが実行されている切り離された画面が起動します。
-m causes screen to ignore the $STY environment variable. With
"screen -m" creation of a new session is enforced, regardless
whether screen is called from within another screen session or
not. This flag has a special meaning in connection with the `-d'
option:
-d -m Start screen in "detached" mode. This creates a new session but
doesn't attach to it. This is useful for system startup
scripts.
遅い答えですが、これは私がやっていることです。これを行うエイリアスを作成します(これをtと呼びましょう)。
ssh $MYSERVER -a -x -t screen -xRR -A -e^Zz -U -O
これは、ssh
にエージェントとX11転送を無効にするように指示し、screen
に実行中のセッションにアタッチし、必要に応じて新しいセッションを開始するように指示し、ブレークアウトコマンドとして^Z
を使用し、UTFを使用します-8と端末についてスマートになります。
これはすべて、ターミナルを開いてt
と入力すると、$ MYSERVERでスクリーンセッションを開くことを意味します。次に、別のターミナルを開いて同じことを行うと、同じセッションに別のウィンドウが表示されます。
同じ画面セッションに複数のターミナルウィンドウを表示して、2つの画面タブを同時に表示できるのは本当に素晴らしいことです。
サーバーの〜/ .bashrcファイルに次のように入力すると、サーバーに初めてログオンしたときにscreenセッションが開始されます。すでに実行されている場合は、そのセッションに再接続します。
これは非常に便利です。
if [ -n "$SSH_CONNECTION" ] && [ -z "$SCREEN_EXIST" ]; then
export SCREEN_EXIST=1
screen -DRi
fi