LoginSignup
7
6

More than 5 years have passed since last update.

GNU screen のバージョンをあげたら、踏み台サーバ経由の ssh 接続ができなくなった

Last updated at Posted at 2014-06-04

先に結論

~/.screenrc の shell はフルパスにしましょう

~/.screenrc
shell /bin/zsh

環境

fumidai を経由して、server に接続していた

local -> fumidai -> server

~/.ssh/cofig はこんな感じ

~/.ssh/cofig
Host fumidai
  Hostname xx.xx.xx.xx

Host server
  HostName yy.yy.yy.yy
  ForwardAgent yes
  ProxyCommand ssh fumidai -W %h:%p

ある日から、急にこんなエラーが...

$ ssh server
zsh: No such file or directory
ssh_exchange_identification: Connection closed by remote host

最初、zsh が、何かを探して、"No such file or directory" を出したのかと思っていたけれど、
zsh そのものが、"No such file or directory" だった

openssh では、環境変数 SHELL を参照するが、そこの値が絶対パス で無いため、問題になったらしい
確かにローカル環境で、環境変数 SHELL を確認すると、コマンド名のみになっている

$ echo $SHELL
zsh
  • $PATH は参照しないのね

GNU screen のバージョンで、$SHELL の値が変わる

とはいえ、最近そんな環境変数をいじった覚えもないし...
そもそも、環境変数 $SHELL は自前でいじらないで、screen に任せてるし...

~/.screenrc
shell zsh

screen も最近、Mac のデフォルトのやつから、Homebrew で最新のにしたばかりだし...

まさか...

Mac のデフォルトの screen

$ /usr/bin/screen -v
Screen version 4.00.03 (FAU) 23-Oct-06
$ /usr/bin/screen
$ echo $SHELL
/bin/zsh
$ ls /bin/zsh
/bin/zsh*
$ ssh server

正常に踏み台 ssh 接続できる

Homebrew で入れた screen

$ /usr/local/bin/screen -v
Screen version 4.02.01 (GNU) 28-Apr-14
$ /usr/local/bin/screen
$ echo $SHELL
zsh
$ ls zsh
ls: zsh: No such file or directory
$ ssh server
zsh: No such file or directory
ssh_exchange_identification: Connection closed by remote host

orz

~/.screenrc の shell はフルパスに変更

~/.screenrc
shell /bin/zsh
$ screen -v
Screen version 4.02.01 (GNU) 28-Apr-14
$ screen
$ echo $SHELL
/bin/zsh
$ ls /bin/zsh
/bin/zsh*
$ ssh server

踏み台 ssh 接続できた!!

参考

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6