SSH问题汇总
SSH agent 登录失败问题
如果当前系统已经启用 SSH agent,对于没有启用证书登录的主机来说,ssh 或者 scp 登录时可能会不提示输入用户名和密码却直接报 Too many authentication failures 错误:
zzm@ZZM-P238:~$ ssh root@192.168.1.199
Received disconnect from 192.168.1.199: 2: Too many authentication failures for root
此时可以:
先
unset SSH_AUTH_SOCK再登录;ssh 或 scp 登录时增加
-o IdentitiesOnly=yes参数;增加服务端
MaxAuthTries参数(默认为 6)。
证书文件权限问题
SSH 私钥证书文件权限较高时,ssh 命令可能会报如下错误:
WARNING: UNPROTECTED PRIVATE KEY FILE!
Permissions 0644 for 'XXX' are too open.
如果不能修改证书文件权限,可以 sudo 切换为其它用户进行 ssh 连接:
~# sudo -u nobody ssh -i XXX root@IP
支持老的加密方式
可以修改 ssh_config 配置文件或通过命令参数支持老的加密方式:
Host *
HostkeyAlgorithms +ssh-rsa,ssh-dss
PubkeyAcceptedAlgorithms +ssh-rsa,ssh-dss
PubkeyAcceptedKeyTypes +ssh-rsa,ssh-dss
如果单独运行新版本的 ssh 命令连接一些老的系统,可能出现类似下面的报错:
Unable to negotiate with 192.168.1.112 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
此时 ssh 命令需要增加参数支持老的加密方式:
~# ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa root@Server-IP
sftp 自定义端口
如果运行 sftp 命令连接非 22 端口的 SFTP 服务器,可以:
sftp -oPort=2222 root@Server-IP