Ubuntu 12.04のSSH設定は14.04.4では機能しません。

Ubuntu 12.04のSSH設定は14.04.4では機能しません。

12.04 システムを交換するために新しい Ubuntu 14.04.4 サーバーをセットアップしましたが、新しいサーバーで古い SSH 構成に問題があります。構成なしでSSHを使用でき、コマンドラインからBaschenサーバーを介して問題なく接続できます。例えば、

ssh -o ProxyCommand="ssh -W %h:%p bastion.my.company.com" lab123.my.company.com

ところで、/home/myname/.ssh/config以下のような設定でファイルを生成すると問題が発生します。

ServerAliveInterval 150
ServerAliveCountMax 6

ControlMaster auto
ControlPath /tmp/ssh_%h_%p_%r

Host *.my.company.com
User   myname
IdentityFile /home/myname/.ssh/mykey.pem
ProxyCommand ssh bastion -W %h:%p
ForwardAgent yes

Host bastion
Hostname        bastion.my.company.com
User            myname
IdentityFile    /home/myname/.ssh/mykey.pem

上記の設定でsshを使用しようとすると、次のような何百ものsshプロセスが表示されます。

myname 29855 29854  0 12:24 pts/6    00:00:00 ssh bastion -W bastion.my.company.com:22
myname 29856 29855  0 12:24 pts/6    00:00:00 ssh bastion -W bastion.my.company.com:22
myname 29857 29856  0 12:24 pts/6    00:00:00 ssh bastion -W bastion.my.company.com:22
myname 29858 29857  0 12:24 pts/6    00:00:00 ssh bastion -W bastion.my.company.com:22

sshCtrl+をクリックするまで停止し、CすべてのSSHプロセスが終了します。

各プロセスの最後の数行のトレースは次のとおりです。

....
write(4, "SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2"..., 43) = 43
read(5, 0xbfe08efc, 1)                  = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} ---
+++ killed by SIGINT +++

トレースを詳しく調べてみると、ファイルハンドルが次から来たことがわかりました。

...
socket(PF_LOCAL, SOCK_STREAM, 0)        = 3
connect(3, {sa_family=AF_LOCAL, sun_path="/tmp/ssh_bastion.my.company.com_22_myname"}, 57) = -1 ENOENT (No such file or directory)
close(3)                                = 0
pipe([3, 4])                            = 0
pipe([5, 6])                            = 0
..

/tmpにソケットファイルがなく、トレースにバインディングがないことが奇妙です。

答え1

Steeldriverはコメントでソリューションを提供し、ワイルドカードのホストマッチングからbastion.my.company.comを除外するよう提案しました。

例えば、

ServerAliveInterval 150
ServerAliveCountMax 6

ControlMaster auto
ControlPath /tmp/ssh_%h_%p_%r

Host *.my.company.com !bastion.my.company.com
User   myname
IdentityFile /home/myname/.ssh/mykey.pem
ProxyCommand ssh bastion -W %h:%p
ForwardAgent yes

Host bastion
Hostname        bastion.my.company.com
User            myname
IdentityFile    /home/myname/.ssh/mykey.pem

答え2

ControlPath /tmp/ssh_%h_%p_%r

コントロールソケットを「一般的にアクセス可能」にしておくのは非常に悪い考えです/tmp。他のユーザーがアクセスできないセキュリティディレクトリに存在する必要があります。

動作はデフォルト値が変更されたように見えますCanonicalizeHostname。システムでこのオプションのデフォルト値は何ですか?無効にしてみてくださいCanonicalizeHostname no

設定はLogLevel DEBUG3問題のデバッグのための素晴らしいスタートでもありますssh。設定でこのオプションを設定してログを公開できますか?

関連情報