本文致力於合併收納遇到的openSSH問題。
no matching key exchange method found.
報錯會有後續內容提示比如:Their offer:diffie-hellman-group-exchange-sha1
。
原因:源主機金鑰使用的演算法過老如diffie-hellman-group-exchange-sha1
,目的主機的openssh
版本過高要求的金鑰演算法更高階。
解決方法:
-
升級源主機金鑰。
-
源主機更新連結命令。
ssh
時指定:ssh -oKexAlgorithms=+diffie-hellman-group-exchange-sha1 ansuer@dest_vm
。- 在連結配置中註解。
echo -e "Host dest_ip User ansuer oKexAlgorithms +diffie-hellman-group-exchange-sha1" | sudo tee -a ~/.ssh/config
-
目的主機
openssh
放行。echo "KexAlgorithms +diffie-hellman-group-exchange-sha1" | sudo tee -a /etc/ssh/sshd_config systemctl restart sshd
Permission denied (publickey,gssapi-with-mic)
部分系統不支援rsa演算法,我在mac上遇到。
解決方法:
在~/.ssh/config
新增配置
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
refused local port forward originator
使用VSCode遠端開發時一直提示正在遠端登入,無法正常獲取到遠端主機目錄。
原因:
埠轉發引數:AllowTcpForwarding
和 AllowAgentForwarding
。
上述被設定為no
即禁止了埠轉發,可在systemctl status sshd
或journalctl -u sshd
看到如題報錯。
解決方法:
修改相關引數值為yes
,並systemctl restart sshd
。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo sed -i -e '/^UseDNS.*no$/ s/no/yes/' -e '/^PermitRootLogin.*no$/ s/no/yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd