技術メモ帳 このページをアンテナに追加 RSSフィード

2006-07-28

[]sshで多段ログイン 23:23 sshで多段ログインを含むブックマーク sshで多段ログインのブックマークコメント

たとえば以下のように

A というサーバーをログインしなければ到達できない

B というサーバーがあったとき

local --> hostA --> hostB

二回に分けて入力するのが面倒くさい。

local$ ssh user@hostA

# Aにログイン成功
hostA$ ssh user@hostB 

# やっとBに到達。面倒!!
hostB$

そんなときに、以下の構文を思い出すことだろう。

ssh user@host リモートで実行したいコマンド

リモートで実行したいコマンドで

"ssh user@hostB" ってやったらいいんじゃないかと

思いつきでやってしまうと、以下のようにエラーになる。

$ ssh user@hostA "ssh user@hostB"
Pseudo-terminal will not be allocated because stdin is not a terminal.

疑似端末が割り当てられていないため、

怒られてしまった。


通常ならば、hostA にログインしたときに

疑似端末が割り当てられているのだが、

このワンラインコマンド実行モードでは、

わざわざ割り当てないようにしてくれているようだ。

( いたって自然で合理的である。コマンド一つ実行させるために

getty して端末を割り当てるのはリソースがもったいない )


したがって、

その ssh の "デフォルト" の動作を変えればよい。

以下のオプションが使える。

-t      Force pseudo-tty allocation.

予想通りうまくいく。

$ ssh -t user@hostA "ssh user@hostB"
hostB$