SSH多重化を設定しようとしてエラーが発生し、Googleで検索しても正確なエラーメッセージはこれまで0回しか見つかりませんでした。
私は~/.ssh/config
次のコンテンツにします。
Host *
ControlPath ~/.ssh/master-%r@%h:%p
次に、次のコマンドを実行して基本接続を作成しました。
ssh -vMM [email protected]
これは多重化ソケットを正常に作成したようです。
...
Authenticated to host.example.com ([1.2.3.4]:22).
debug1: setting up multiplex master socket
debug1: channel 0: new [/home/user/.ssh/[email protected]:22]
debug1: channel 1: new [client-session]
debug1: Entering interactive session.
...
その後、別のウィンドウでsshを介してコマンドを実行してみました。
ssh -v [email protected] ls
しかし、これは多重化ソケットでは機能しないようです。
OpenSSH_7.5p1, OpenSSL 1.1.0f 25 May 2017
debug1: Reading configuration data /home/user/.ssh/config
debug1: /home/user/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
Master refused session request: Permission denied
debug1: Connecting to host.example.com [1.2.3.4] port 22.
...
Master refused session request: Permission denied
エラーが発生する原因は何ですか?
~/.ssh
編集:との権限は~/.ssh/config
それぞれ700と644なので、そこに問題はありません。~/.ssh/master-*
存在しません。抽象UNIXソケットのようです(それで実際にはファイルシステムには存在しません)。ただし、これはまだ「アクセス拒否」エラーを説明しません。
また、2番目の接続を確立しようとしたときに基本接続が印刷されることを確認しました。
debug1: channel 2: new [mux-control]
debug1: permanently_drop_suid: 0
ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory
debug1: channel 2: free: mux-control, nchannels 3
たぶんこれがそれに関連しているかもしれません。暗号化されていないSSHキーを使用して接続しているため、SSHがパスワードを要求する理由を理解できません。
答え1
「アクセス拒否」エラーの原因を特定しました。
デフォルトでは、 SSHは他のSSHプロセスが既存のマルチプレックスセッションを使用しようとしたときに対話的に権限を要求したいようです。ただしssh-askpass
、システムに権限を要求するプログラムがないため、SSHはデフォルトで「いいえ、アクセス権を付与しません」に設定され、クライアントに「アクセス拒否」エラーメッセージが表示されます。
インストールされている場合ssh-askpass
(場所:x11-ssh-askpass
パッケージArch Linux の場合) 次のダイアログボックスが表示されます。
「OK」を選択すると、接続試行が続行されます。
プロンプト自体は、-M
コマンドラインでmasterを2回指定したために発生しました。引用するにはSSH(1)
:
複数の-Mオプションは、sshを「マスター」モードに設定し、スレーブ接続を受け入れる前に確認が必要です。