Ticket #17432

TELNETデグレード

Open Date: 2009-06-19 16:02 Last Update: 2009-06-30 01:27

Reporter:
(del#24082)
Owner:
Type:
Status:
Closed
Component:
Priority:
7
Severity:
5 - Medium
Resolution:
Fixed
File:
1
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

teraterm-4.63-RC2.exe の問題ですが、telnet接続がデグレードしているようです。

telnetで HP-UX 11.00 に接続したところ、

 ・local echo がoffになっている  ・CTRL+LやCTRL+C押下しても、キー表示されない

といった現象が出ており、実質TELNETが使い物になりません。

Ticket History (3/29 Histories)

2009-06-19 16:02 Updated by: (del#24082)
  • New Ticket "TELNETデグレード" created
2009-06-19 17:56 Updated by: doda
  • Owner Update from (None) to doda
Comment

HP-UX 10.20, Solaris10, FreeBSD 6.4では現象が再現しません。

  • サービスはその他ではなく、Telnetにしていますか?
  • TCPポートは23ですか?
  • TELNET.LOGを取得した場合、どのような内容になっていますか?
2009-06-19 20:25 Updated by: (del#24082)
Comment

月曜日にデータ採取します。 手順としては、古いTeraTermを完全削除し、4.63 RC2をクリアインストールしました。TELNETでのログインは、TeraTerm Menuからです。teraterm.ini は一切いじっていません(インストール初期状態のまま)。

Fedora11に telnet-server をインストールして、4.63 RC2で試してみましたが、特に問題はないです。

いずれにせよ、オペミスも含め、来週確認します。

2009-06-19 20:47 Updated by: (del#24082)
Comment

4.63 RC2のCygwin接続で、同様の現象を確認しました。 CygTerm接続後、CTRL+D押下、Enter押下して、切断したときのログを添付しました。

2009-06-19 22:26 Updated by: doda
Comment

yutakapon への返信

4.63 RC2のCygwin接続で、同様の現象を確認しました。

4.63-RC2に含まれているcygterm.exeは最新のソースに対応するバイナリではないようですね。 snapshot-20090616に含まれているcygterm.exeに入れ替えるとどうでしょうか?

1.07_16までのcygterm.exeはTELNET SGA/ECHOオプションを拒否するため、行単位送信(Line at a time)モードになるのが正しいです。 この辺りはPuTTYと組み合わせた時も同じで、PuTTYの設定でローカルライン編集が自動だと同じようになるため、"強制的にオフ"に設定する必要があります。

1.07_17では手抜きではありますがSGA/ECHOオプションのネゴシエーションを行うようにしましたので、行単位編集モードが自動で無効になります。(Tera Term/PuTTY共に)

TELNETプロトコルに対応していなかったり対応が貧弱なのに行単位編集モードでは不具合が出るような相手と接続する場合は、行単位編集モードを強制的に無効に設定する必要があります。

2009-06-20 02:54 Updated by: doda
Comment

yutakapon への返信

TELNETでのログインは、TeraTerm Menuからです。

TeraTerm Menu のソースを確認したところ、ttssh を使わない場合は /nossh を付加するだけになっていました。

これだと、標準ではssh接続を行うように TERATERM.INI で設定されていると Telnet=off となるため telnet 接続ではなく "その他" の接続となります。

このため telnet オプションのネゴシエーションが行われないので、行単位送信モードになってしまいます。

r3525 で非 ssh 接続時は /T=1 も付加するようにしてみましたが、これでどうでしょうか?

2009-06-20 23:22 Updated by: (del#24082)
Comment

CygTermのリビルドで、Cygwin接続は問題ないことを確認しました。 makearchive.bat でビルドするときに、CygTerm+もビルドされるようにすると、安心ですね。

HP-UX 11.00での確認は、来週行います。

どうもありがとうございます。

2009-06-21 15:00 Updated by: (del#1144)
Comment

makearchive.bat

こちらの抜けでバイナリが古いままになっていてすみません。先ほどコミットしました。

2009-06-22 09:04 Updated by: (del#24082)
  • Ticket Close date is changed to 2009-06-22 09:04
  • Status Update from Open to Closed
  • Resolution Update from None to Fixed
Comment

4.63 RC3で HP-UX 11.00 で問題ないことを確認しました。 クローズします。

2009-06-22 09:17 Updated by: doda
  • Status Update from Closed to Open
  • Resolution Update from Fixed to Accepted
Comment

Tera Term側でも気になる点が見つかりましたので、もう少し検討させてください。

2009-06-22 16:55 Updated by: doda
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2009-06-22 16:55
Comment

とりあえずの対処として r3531 の修正でクローズします。

残りに関しては別チケット(#17477)とします。

2009-06-22 17:04 Updated by: doda
  • Resolution Update from Accepted to Fixed
2009-06-22 19:52 Updated by: (del#24082)
Comment

TELNET接続時に"/T=1"を付加しなければならない、というのはインパクト大きくないですか? LogMeTTユーザや、マクロを使っているユーザに、4.63から当該オプション必須ということですよね。

まだまだ、TELNETの需要は多いと思います。

2009-06-22 21:41 Updated by: doda
Comment

yutakapon への返信

TELNET接続時に"/T=1"を付加しなければならない、というのはインパクト大きくないですか? LogMeTTユーザや、マクロを使っているユーザに、4.63から当該オプション必須ということですよね。

いいえ。r3530の修正でまともなTelnetサーバならば問題は出なくなっているはずです。

また、この件とは別に Telnet 接続時は /T=1 を付けることを推奨します。設定ファイルで Telnet=off となっている時に /T=1 を付けなかった場合、それは Telnet 接続ではありません。 この件の問題が出なくとも、また別の問題が出る可能性が十分にあります。

2009-06-22 23:51 Updated by: (del#24082)
Comment

デフォルトで Telnet=off なので、4.63からは"/T=1"を推奨、ということですね。connectマクロにも記載が必要と思います。

よろしくお願いします。

2009-06-23 10:35 Updated by: None
Comment

デフォルトは次のようになっています。

INI
[Tera Term] Telnet = off
[TTSSH] Enabled = on
app
[Tera Term] Telnet = true
[TTSSH] Enabled = false

2.3 の INI では on になっていますので、これはあとからの修正です。TTSSH がセットになったことで Telnet が off にされたものと推測します。

しかし、SSH が true ならそれに上書きされてしまいますので、Telnet を On にしてもよいのではと思います。

2009-06-23 11:06 Updated by: None
Comment

ここに来て、以前追加した TTSSH の /telnet は誤解の元だと感じました。/nossh はあくまで TTSSH の Enabled を off にするためのオプションなのに、その別名としてこれを作ってしまったのです。削除しましょうか?

別解として TTSSH 側で ts->Telnet を立てるというのもありますが、どちらがすっきりするでしょうかね。

2009-06-23 12:12 Updated by: (del#24082)
  • Status Update from Closed to Open
Comment

これまで TeraTerm 4.xx では、"Telnet=off"だったので、今までの実績を保つならば、今後もoffのままでよいような気がします。 しかし、4.63から Line at a timeモード が実装されるので、"Telnet=on"とすることにより、これまでの実績に限りなく近くなるのであれば、オンとすべきでしょうね。

ユーザ側としては、これまでのマクロスクリプトを改修したくはないでしょうから、TeraTerm+TTSSH側で下位互換性を保つのがよいです。

もう少し議論が必要そうなので、再オープンします。

2009-06-23 12:59 Updated by: doda
Comment

None への返信

2.3 の INI では on になっていますので、これはあとからの修正です。TTSSH がセットになったことで Telnet が off にされたものと推測します。 しかし、SSH が true ならそれに上書きされてしまいますので、Telnet を On にしてもよいのではと思います。

手元では少し前からTelnet=onで運用していますが特に問題は出ていません。

初期の設定ファイルでも Telnet=on にしようとも考えたのですが、ssh 接続 している状態で設定を保存すると off になり、いきなり動作が変わったように見えて 混乱しないかと考えて見送っていました。

ただ、今考えると on にしてもいいようにも思います。

None への返信

ここに来て、以前追加した TTSSH の /telnet は誤解の元だと感じました。/nossh はあくまで TTSSH の Enabled を off にするためのオプションなのに、その別名としてこれを作ってしまったのです。削除しましょうか? 別解として TTSSH 側で ts->Telnet を立てるというのもありますが、どちらがすっきりするでしょうかね。

自分は ts->Telnet を立てる方がいいと思います。

もしくは、Tera Term側で /telnet を /T=1 相当として扱うようにするとか。 (この場合は /telnet を TTSSH 側で消さないようにする)

yutakapon への返信

これまで TeraTerm 4.xx では、"Telnet=off"だったので、今までの実績を保つならば、今後もoffのままでよいような気がします。 しかし、4.63から Line at a timeモード が実装されるので、"Telnet=on"とすることにより、これまでの実績に限りなく近くなるのであれば、オンとすべきでしょうね。 ユーザ側としては、これまでのマクロスクリプトを改修したくはないでしょうから、TeraTerm+TTSSH側で下位互換性を保つのがよいです。

前にも書きましたが、r3530 の修正でまともなTelnetサーバが相手の時は Telnet=off かつ /T=1 を付けない場合でも問題が出なくなっているはずです。

また r3530 の修正でも対応できないようなサーバがあったとしても、 EnableLineMode=off を設定する事によって、マクロに手を入れずに対処する事ができます。 ただし、この場合はLine at a timeモードを使う事が出来なくなりますが。

また r3530 の対処は暫定のもので、4.64 までにはもう少しまともな対処を入れるつもりです。(#17477)

2009-06-23 13:14 Updated by: (del#1144)
Comment

# ログインしてしばらく放っておくと、勝手にログオフされるんですね。上の None 二人は私です。

これまでの実績に限りなく近くなるのであれば

HP-UX 11.00 での問題は、「other 接続だと行単位送信モードがデフォルトのonになる」と「"Telnet=off" がデフォルト」のコンボにより起きました。これまでの動作に近づけるとしても、どちらかを逆にすることで解決できるものと思います。

"Telnet=off" がデフォルトだと、たとえば TTSSH を選択せずにインストールした場合、port=22/protocol=other(telnetでない)がデフォルトになります。Telnet がデフォルトでないことが *自然と思われるかどうか* というのが疑問です。TCPPortについては、TTSSHの有無によりインストーラで書き込めるかもしれません。

非 ssh 接続時は /T=1 も付加する

ttpmenu で use SSH を選ばないとすると、/nossh なので telnet か other となりますが、そのどちらかを選ぶのが Telnet の値でした。それが、/T=1 と明示することで telnet に限定されてしまいましたね。大概 telnet でしょうから大丈夫だと思いますが、一応メモとして書いておきます。

最後に /telnet ですが、TTSSH側でフラグを立てることにします。

2009-06-23 13:32 Updated by: (del#1144)
Comment

doda への返信

ssh 接続している状態で設定を保存すると off になり

手動の場合はoffになり、コマンドラインでパラメータを渡すとそのままになりますね。接続ダイアログのOK時に値を変えているようです。

もしくは、Tera Term側で /telnet を /T=1 相当として扱うようにするとか。 (この場合は /telnet を TTSSH 側で消さないようにする)

プログラム間で相互にパラメータを触ると入り組んでしまうので、TTSSH 側で処理することにしました。

2009-06-23 17:46 Updated by: doda
Comment

maya への返信

手動の場合はoffになり、コマンドラインでパラメータを渡すとそのままになりますね。接続ダイアログのOK時に値を変えているようです。

これってまずくないか?と思って確認してみたところ、ttxssh:TTXOpenTCP()に以下の処理が有る為大丈夫なようですね。

/* This next line should not be needed because Tera Term's
   CommLib should find ts->Telnet == 0 ... but we'll do this
   just to be on the safe side. */
pvar->cv->TelFlag = FALSE;
# 念のための処理って大事ですね

逆にこの処理にすべてを任せて、ssh接続時はts->Telnetを弄らないようにした方がいいように思います。

2009-06-23 19:26 Updated by: doda
Comment

maya への返信

"Telnet=off" がデフォルトだと、たとえば TTSSH を選択せずにインストールした場合、 port=22/protocol=other(telnetでない)がデフォルトになります。Telnet がデフォルト でないことが *自然と思われるかどうか* というのが疑問です。

これは確かに不自然に思います。

TCPPortについては、TTSSHの有無によりインストーラで書き込めるかもしれません。

TCPPortの値がなんとかなればデフォルトの設定ファイルで Telnet=on にしておく事で 自然な状態になりますので、インストーラで対応可能でしたらお願いしたいです。

非 ssh 接続時は /T=1 も付加する

ttpmenu で use SSH を選ばないとすると、/nossh なので telnet か other となりますが、 そのどちらかを選ぶのが Telnet の値でした。それが、/T=1 と明示することで telnet に限定されてしまいましたね。大概 telnet でしょうから大丈夫だと思いますが、一応メモ として書いておきます。

これは少しだけ迷いましたが、書かれているように大抵は Telnetだと思う(そもそも Raw 接続の存在を認識している人はほとんどいないと思う)ので変更しました。

ただ、Tera Term 側の対処によって(おそらくはHP-UX 11.0でも)問題が起きなく なったはずなので、元に戻した方がいいように思えてきました。 この場合 Line at a time モード以外の問題は起きる可能性がありますが、 これは以前から起きていたはずなので気にしなくてもいいように思います。

# TCPLocalEcho/TCPCRSend って余り使われていないのかなあ。自分にとっては必須の設定なんだけれど。

TeraTerm Menu側を修正するとしたら、"ttsshを使う"ではなく"接続タイプ"として

  • telnet接続
  • ssh接続
  • その他

の三択にするという形でしょうか。

2009-06-27 08:44 Updated by: (del#1144)
Comment

Telnet=on TCPPort のインストーラ

さきほどコミットしました。

TeraTerm Menuは、/T=1 を削除して元に戻しましょうか。

2009-06-27 13:22 Updated by: (del#1144)
Comment

doda への返信

接続ダイアログのOK時に値を変えているようです。

逆にこの処理にすべてを任せて、ssh接続時はts->Telnetを弄らないようにした方がいいように思います。

TGetHNRec.Telnet の値を受けて、CVTWindow::OnFileNewConnection() の中で ts.Telnet を更新していました。

先ほど修正をコミットしました。テストしていただけるでしょうか。

2009-06-27 16:56 Updated by: doda
Comment

maya への返信

逆にこの処理にすべてを任せて、ssh接続時はts->Telnetを弄らないようにした方がいいように思います。

TGetHNRec.Telnet の値を受けて、CVTWindow::OnFileNewConnection() の中で ts.Telnet を更新していました。 先ほど修正をコミットしました。テストしていただけるでしょうか。

これだとraw接続でも TelFlag が off になりませんね。修正してみました。

ソースの関連する部分を一通り確認しなおしてみて、多分これで問題ないと思います。

2009-06-28 22:01 Updated by: (del#1144)
Comment

doda への返信

これだとraw接続でも TelFlag が off になりませんね。修正してみました。

うっかりでした。すみません。

2009-06-30 01:27 Updated by: doda
  • Ticket Close date is changed to 2009-06-30 01:27
  • Status Update from Open to Closed
Comment

問題なさそうなのでクローズします。

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login