我无法从我的 Ubuntu 安装之一通过 ssh 连接到我的服务器,但如果我使用另一个 Ubuntu 安装或 Windows 操作系统,则使用 SSH 连接可以顺利进行。
我的 Ubuntu 安装中出现了一些问题,我正在努力寻找确切的问题。
我尝试重新安装 ssh/openssh-client/openssh-/ssh。
以下是详细输出中的几行:
ssh username@MYSERVERADDRESS -v
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to MYSERVER ([MYSERVERADDRESS]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
packet_write_wait: Connection to MYSERVERADDRESS port 22: Broken pipe
通过谷歌搜索尝试了许多不同的解决方案,但从未奏效。删除了 .ssh 目录,删除了 /etc/ssh/ssh_config (它是使用默认值再次自动创建的)。
另一个信息是问题不是来自服务器端,因为我可以使用另一个操作系统和相同的网络通过 SSH 连接到服务器。
更新 :
防火墙已禁用
服务器托管在云上
我有 3 台不同的机器,分别启动 Windows 和 Linux。
SSH 在所有机器上都能完美运行,除了 Linux 连接出现问题的机器之外,在同一台使用 Windows 的机器上,一切都运行良好。
第 4 点更清晰:共有 3 台机器分别加载了 Linux 和 Windows(双启动),只有一台机器在运行 Linux 时出现 SSH 问题。
如果您需要我提供更多数据(服务器地址和用户名除外),请告诉我。
答案1
我已经找到了这个问题的解决方案(很抱歉回答我自己的问题)。我回答这个问题是因为如果有人遇到这个问题,那么他/她可以使用我找到的解决方案。
实际上问题出在服务器端和客户端上。
服务器端问题是/home/<user>/.ssh/known_hosts
服务器上的文件对于 Ubuntu 安装具有无效条目,因为两个操作系统具有相同的硬件 ID 和相同的 IP(静态 IP)但密钥不同。
所以我所做的是:
ssh-keygen -f /home/<user>/.ssh/known_hosts -R ip.ip.ip.ip
就我而言,ip.ip.ip.ip 是我的网络的静态公共 IP。在服务器和客户端计算机上执行此命令,其中 ip.ip.ip.ip 将分别更改。
我不知道这个命令的作用(我从谷歌搜索/试验错误中找到了这个解决方案)
您还可以将客户端计算机的known_hosts 文件复制到其他客户端计算机或操作系统。
对不起,我的英语不好。
如果有人知道这个命令的作用以及为什么这个命令解决了问题,那么请告诉我们!谢谢。
宾果游戏解决了!
答案2
被锁定在您的服务器之外?快到后面去吧!
由于以下原因被锁定在服务器之外:
- 主机密钥验证失败错误
- SSH 错误配置
- 配置错误
- 防火墙锁定
注意:这适用于 Unix | Linux 上,Windows 上不行。
让我们开始吧。
根据您的情况,有两种选择。
选项 1:终端访问(如果您可以重新获得终端访问权限)
终端访问选项
更新您的系统:
sudo aptitude update && aptitude safe-upgrade -y
*或者您可以使用:
sudo apt-get update && apt-get upgrade -y
现在重新安装损坏的 ssh
sudo apt-get --install ssh -y
您将安装更新版本!
修理主机密钥验证失败错误消息,执行:
ssh-keygen -R hostname
。
SSH 访问被阻止?立即恢复!
如果您完全无法访问服务器接收超时当尝试使用 ssh 连接时,由于;防火墙配置错误、端口阻塞、磁盘故障或 ssh 配置错误、主机密钥验证失败错误等。你将使用磁盘安装选项。
磁盘安装选项(远程服务器)
假设你已经尝试过远程重启、远程重置、远程硬件重置通过网络界面,问题仍然存在。
请询问您的数据中心给你一个KVM控制台访问并将您的盒子启动到救援模式 (您可以免费获得 1 小时)
从控制台访问: 登录:
*ubuntu@rescue#*
安装磁盘
mkdir tempDisk
mount --bind /dev/xvda2 /tempDisk
mount --bind /proc /tempDisk/proc
mount --bind /dev /tempDisk/dev
mount --bind /sys /tempDisk/sys
chroot /tempDisk
注意:现在您已处于 root 状态,您的提示将会改变
**root@your-host#**
调查问题并解决它。例如更新您的系统以修复潜在的错误。
sudo apt-get update && apt-get upgrade -y
sudo apt-get --install ssh -y
使固定主机密钥验证失败错误消息:
ssh-keygen -R hostname
完成后退出返回 DKM 控制台提示符
`**root@your-host#** exit `
银行获救
*ubuntu@rescue#*
通过相同的 KVM 控制台重新启动服务器。
*ubuntu@rescue#* shutdown -r now
恢复正常登录,就可以开始了。
本地访问选项
如果你有本地或机架访问,取出磁盘,将其安装到另一个相同版本的工作linux中,例如:
***mytech@hostname#***
mkdir tempDisk
mount --bind /dev/xvda2 /tempDisk
mount --bind /proc /tempDisk/proc
mount --bind /dev /tempDisk/dev
mount --bind /sys /tempDisk/sys
使用以下命令重新获取访问权限:chroot /tempDisk
注意:现在您已处于服务器的根目录中,您的提示将发生变化!
myServer@hostname#;
sudo apt-get update && apt-get upgrade -y
sudo apt-get --install ssh -y
使固定主机密钥验证失败错误消息:
ssh-keygen -R hostname
完成退出
`**myServer@hostname#** exit `
取出磁盘并将其重新插入原始服务器,然后让她兴奋!。
答案3
我不确定我的问题是否与您的问题完全相同,但很相似,所以我将发布我的解决方案。
初步信息
- 我双启动 Ubuntu 20.04 和 Windows 10
- 我连接的系统位于同一个本地网络上
- 我无法从 Ubuntu 连接到我的服务器,但我可以使用 putty 在 Windows 10 上连接到我的服务器
现在来看解决方案,它相对简单。
因此,当我尝试从 Ubuntu 连接到我的服务器时,我使用了这个命令ssh USER@SERVER_NAME
,但它不起作用,所以我决定找到我的服务器的本地地址,我从我的路由器中找到了这个地址。然后我尝试了这个命令ssh USER@SERVER_LOCAL_IP
,它起作用了。
希望这对某人有所帮助。