承前で
一応、-R が「Reattach if possible, otherwise start a new session.」なんだけどこれがうまく機能してない状態。
また、reattache 出来る byobu session が存在せず、新しく byobu session を作成する場合、
Cygwin 側の LC_CTYPE が ja_JP.UTF-8@cjknarrow になっていると
byobu 起動時に
ただし、LC_CTYPE が正しく渡った byobu session が既に存在しており、それに reattach する場合は、この問題は生じない模様。
あと、Cygwin では
ssh $HOST -t "byobu -Rxr byobu"みたいにして ssh する際に自動 reattach してたんだけど、remote 側に byobu って session が存在しないと reattach できないので失敗する。
一応、-R が「Reattach if possible, otherwise start a new session.」なんだけどこれがうまく機能してない状態。
また、reattache 出来る byobu session が存在せず、新しく byobu session を作成する場合、
Cygwin 側の LC_CTYPE が ja_JP.UTF-8@cjknarrow になっていると
byobu 起動時に
locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: ??????????????????????みたいに表示されて、byobu 上でマルチバイト文字の表示が破綻する。
ただし、LC_CTYPE が正しく渡った byobu session が既に存在しており、それに reattach する場合は、この問題は生じない模様。
あと、Cygwin では
autossh $HOST -t "byobu -Rxr byobu"とか
autossh $HOSTだと、autossh の help が表示されるのみで、自動接続以前の問題としてそもそも接続されない。
byobu の option -R は以下のように末尾に持って来るとよいようだ。
そもそもの問題として、
~/.ssh/config に
とりあえずこれは ~/.ssh/config に決め打ちで
最後の、autossh が起動しない問題は、どうも monitor port の問題らしい。
help では
とりあえず、AUTOSSH_PORT か -M に何か適当なポート番号を与えると接続出来たのだが、
説明では [-M monitor_port[:echo_port]] となっているので必須オプションではないはずだし、
Ubuntu ではこれ与えなくても動くのだが、なぜ?
「autossh "-M" default port」とかでググって
Ubuntu の場合、Shell Script で wrapper 書いてあって適当なポート割り当ててるので、monitoring port 設定しなくても動いているっぽい。
つぅか、これ必須オプションなの???
とりあえず -M0 で monitoring 切っておいてもあまり問題ない感じなだが、どうしようかな?
ssh $HOST -t "byobu -xr byobu -R"また、LC_CTYPE については、
ssh $HOSTだと、Ubuntu 20.04.1 LTS では
- /etc/profile.d/01-locale-fix.sh
eval $(/usr/bin/locale-check C.UTF-8)が呼ばれて、自動的に
LANG='C.UTF-8' LC_CTYPE='C.UTF-8'に置き換えられるようなのだが、なぜか、
ssh $HOST -t "byobu -xr byobu -R"だと /etc/profile.d 以下が処理されてないらしく、LC_CTYPE に ja_JP.UTF-8@cjknarrow が入ってしまうようだ。
そもそもの問題として、
~/.ssh/config に
SendEnv LANG LC_* TERMみたいな設定しているのが問題なような気もするのだが、
とりあえずこれは ~/.ssh/config に決め打ちで
SetEnv LC_CTYPE=ja_JP.UTF-8 SetEnv LANG=ja_JP.UTF-8を追加しておくことで回避。
最後の、autossh が起動しない問題は、どうも monitor port の問題らしい。
help では
-M specifies monitor port. May be overridden by environment variable AUTOSSH_PORT. 0 turns monitoring loop off. Alternatively, a port for an echo service on the remote machine may be specified. (Normally port 7.)となっていて、うちの Cygwin の環境だと
$ declare -p AUTOSSH_PORT -bash: declare: AUTOSSH_PORT: not foundのように AUTOSSH_PORT は設定されてない。
とりあえず、AUTOSSH_PORT か -M に何か適当なポート番号を与えると接続出来たのだが、
説明では [-M monitor_port[:echo_port]] となっているので必須オプションではないはずだし、
Ubuntu ではこれ与えなくても動くのだが、なぜ?
「autossh "-M" default port」とかでググって
- StackExchange / superuser / 2018-01-01: What is the default monitoring port for autossh?
Ubuntu の場合、Shell Script で wrapper 書いてあって適当なポート割り当ててるので、monitoring port 設定しなくても動いているっぽい。
つぅか、これ必須オプションなの???
とりあえず -M0 で monitoring 切っておいてもあまり問題ない感じなだが、どうしようかな?
タグ
コメントをかく