我正在尝试设置 SSH 多路复用,但我遇到了一个错误,并且在 Google 上有 0 次点击以获得确切的错误消息。
我~/.ssh/config
用内容创建:
Host *
ControlPath ~/.ssh/master-%r@%h:%p
Run Code Online (Sandbox Code Playgroud)
然后,我通过运行创建了主连接:
ssh -vMM user@host.example.com
Run Code Online (Sandbox Code Playgroud)
这似乎成功创建了多路复用套接字:
...
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.
...
Run Code Online (Sandbox Code Playgroud)
然后,我尝试在另一个窗口中通过 ssh 运行命令:
ssh -v user@host.example.com ls
Run Code Online (Sandbox Code Playgroud)
但是,这似乎无法使用多路复用套接字:
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.
...
Run Code Online (Sandbox Code Playgroud)
什么可能导致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
Run Code Online (Sandbox Code Playgroud)
也许这是相关的。我使用未加密的 SSH 密钥进行连接,所以我不明白为什么 SSH 需要要求输入密码。
我已经弄清楚是什么导致了“拒绝访问”错误。
默认情况下,当另一个 SSH 进程想要使用现有的 Multiplex 会话时, SSH 似乎想以交互方式请求许可。但是,ssh-askpass
它用于请求许可的程序在我的系统中丢失,因此 SSH 默认为“不,不授予访问权限”,从而导致客户端上出现“拒绝访问”错误消息。
如果ssh-askpass
已安装(在 Arch Linux的x11-ssh-askpass
软件包中),则会显示如下对话框:
选择“确定”将允许连接尝试继续。
提示本身是因为我-M
在 master 的命令行上指定了两次。引用SSH(1)
:
多个 -M 选项将 ssh 置于“主”模式,在接受从连接之前需要确认。
归档时间: |
|
查看次数: |
937 次 |
最近记录: |