主服务器拒绝会话请求:权限被拒绝

主服务器拒绝会话请求:权限被拒绝

我正在尝试设置 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 套接字(因此实际上并不存在于文件系统中)?但是,这仍然不能解释“访问被拒绝”错误。

另外,我注意到,当尝试建立第二个连接时,主连接会打印:

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 进程想要使用现有的 Multiplex 会话时,SSH 似乎希望以交互方式请求许可。但是,ssh-askpass我的系统上缺少用于请求权限的程序,因此 SSH 默认为“否,不授予访问权限”,从而导致客户端出现“访问被拒绝”错误消息。

如果ssh-askpass已安装(位于包裹x11-ssh-askpass在 Arch Linux 上),然后将显示如下对话框:

选择“确定”将允许连接尝试继续。

提示本身是因为我-M在master的命令行上指定了两次而引起的。去引用SSH(1)

多个 -M 选项将 ssh 置于“主”模式,并在接受从属连接之前需要确认。

相关内容