我使用 ssh 的别名
alias ssh
alias ssh='ssh -t -K -Y
我想使用 ssh 转发 X11(除了一台主机),所以我这样做了:
vim .ssh/config
host myhost
port 22
ForwardX11 no
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
但..
ssh myhost
sh: xauth: command not found
myuser@myhost$
似乎我的选项被忽略了..为什么?
我也尝试过
ForwardX11 no
ForwardX11trusted no
但没有成功。
解决方法可以是这样...
\ssh myhost
所以 -t -K -y 被忽略,但我更喜欢更干净的解决方案
我忘了:远程服务器使用 dropbear
阅读这一页我发现可以为服务器上的特定密钥禁用 X11
vim .ssh/authorized_keys
no-X11-forwarding ssh-rsa......
但在这种情况下它也拒绝 \ssh 命令!
ssh myhost
X11 forwarding request failed on channel 0
Connection to myhost closed by remote host.
Connection to myhost closed.
\ssh myhost
Connection to myhost closed by remote host.
Connection to myhost closed.
在服务器上使用此行可以工作..但对于 pubkey 来说不行,它需要密码
no-agent -forwarding, no-port-forwarding, no-x11-forwarding ssh-rsa....
答案1
初步说明
您标记了掉落熊但我怀疑你的 SSH客户来自 Dropbear (即我怀疑你ssh
实际上是dbclient
;我想dbclient
甚至不支持你使用的所有选项)。因此,这个答案研究了 OpenSSH 的 SSH 客户端的行为。
(我个人希望任何客户端在与问题相关的方面复制 OpenSSH 的行为。关键是 OpenSSH 是 SSH 实现的事实上的标准。)
分析
ssh(1)
按以下顺序从以下来源获取配置数据:
- 命令行选项
- 用户的配置文件 (
~/.ssh/config
)- 系统范围的配置文件 (
/etc/ssh/ssh_config
)对于每个参数,将使用第一个获得的值。 […]
通过使用别名,您正在使用ssh -Y
.命令行选项会在您的配置文件中ssh
忽略。ForwardX11 no
如果您希望配置文件中的选项起作用,则不得使用任何相反的命令行选项。命令行选项首先重要,就是这样。
解决方案
你写了:
我想使用 ssh 转发 X11 除了一台主机
不要在别名中,而是在配置文件中实现它:
host myhost
ForwardX11 no
host *
ForwardX11 yes
ForwardX11Trusted yes
请注意手册中的说明:
由于使用每个参数的第一个获得的值,因此应在文件开头附近给出更多特定于主机的声明,并在末尾给出一般默认值。
这意味着host myhost
应该在之前host *
,与上面的示例完全相同,而不是相反。