Ssh
ssh:為什麼我為特定主機禁用的轉發 X11 不起作用?
我為 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....
初步說明
您標記了dropbear,但我懷疑您的 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
應該是 beforehost *
,就像上面的例子一樣,而不是相反。