Openssh
Master 拒絕會話請求:權限被拒絕
我正在嘗試設置 SSH 多路復用,但我遇到了一個錯誤,並且在 Google 上有 0 次點擊以獲取確切的錯誤消息。
我創建
~/.ssh/config
了以下內容:Host * ControlPath ~/.ssh/master-%r@%h:%p
然後,我通過執行創建了主連接:
ssh -vMM user@host.example.com
這似乎成功地創建了多路復用套接字:
... Authenticated to host.example.com ([1.2.3.4]:22). debug1: setting up multiplex master socket debug1: channel 0: new [/home/user/.ssh/master-user@host.example.com:22] debug1: channel 1: new [client-session] debug1: Entering interactive session. ...
然後,我嘗試在另一個視窗中通過 ssh 執行命令:
ssh -v user@host.example.com 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 套接字(因此實際上並不存在於文件系統中)?但是,這仍然不能解釋“拒絕訪問”錯誤。另外,我注意到在嘗試建立第二個連接時,主連接會列印:
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 需要詢問密碼。
我已經弄清楚是什麼導致了“訪問被拒絕”錯誤。
~~預設情況下,~~當另一個 SSH 程序想要使用現有的多路復用會話時,SSH 似乎希望以互動方式請求許可。但是,
ssh-askpass
我的系統上缺少用於請求權限的程序,因此 SSH 預設為“不,不授予訪問權限”,從而導致客戶端上出現“拒絕訪問”錯誤消息。如果
ssh-askpass
已安裝(在 Arch Linux的x11-ssh-askpass
軟體包中),則會顯示如下對話框:選擇“確定”將允許連接嘗試繼續。
提示本身是因為我
-M
在master的命令行上指定了兩次造成的。引用SSH(1)
:多個 -M 選項將 ssh 置於“主”模式,在接受從連接之前需要確認。