Azure服务器在ssh链接时报错

昨天用windows power shell链接时提示 无法确定主机安全性 让我选yes or no
今天再次使用power shell链接时 提示(密钥文件的权限过大),在修改文件权限后提示Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
于是我使用finalshell 连接服务器,提示密钥未注册。
想知道原因和解决办法。

检查SSH密钥是否正确配置:在本地计算机上打开终端或命令行界面,输入命令ls ~/.ssh,如果密钥文件不存在,则需要生成新的SSH密钥。输入命令ssh-keygen -t rsa -b 4096来生成新的SSH密钥。

将SSH密钥添加到服务器的authorized_keys文件中:使用以下命令将SSH密钥添加到服务器的authorized_keys文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys。如果您无法将密钥添加到服务器上,请检查您的SSH配置文件是否正确。

检查SSH客户端是否正确配置:如果您使用的是Windows系统,请确保您的SSH客户端已正确配置。可以尝试使用其他SSH客户端,如PuTTY或MobaXterm,来连接服务器。如果其他SSH客户端可以正常连接服务器,则可能是您的PowerShell配置有问题。

使用具有足够权限的用户账户连接服务器:如果您使用的是Linux系统,请确保使用具有足够权限的用户账户连接服务器。如果您无法连接到服务器,请尝试使用root账户连接服务器,并检查您的SSH密钥是否正确配置。

还是权限的问题,我一般用 xshell
你注意 azure 创建虚拟机,可以指定 ssh key,选择自己的密码,不要它生成

这些错误提示可能是由于不同的原因导致的:

1."无法确定主机安全性"错误提示通常表示你首次连接到该主机,需要确认它的远程访问标识是否可信任。如果您确信该主机是安全的,则可以输入“yes”继续连接。如果您不确定该主机是否安全,则应输入“no”,并检查其他连接详细信息以确保连接安全。

2."密钥文件的权限过大"错误提示表示您的ssh私钥文件具有超出默认权限的权限设置,这可能会导致无法连接服务器。尝试将其权限设置更改为默认值(例如 600),然后再次尝试连接。

3."Permission denied (publickey, gssapi-keyex, gssapi-with-mic)" 错误提示表示您的ssh密钥无法被服务器验证或者缺少对应的用户权限。请确保您使用的ssh密钥正确,并且已经被添加到服务器上的 .ssh/authorized_keys 文件中。

4."密钥未注册"错误提示可能是因为你在 FinalShell 中没有配置正确的 ssh 密钥。请确保您将正确的 ssh 密钥文件上传到 FinalShell,并在会话设置中指定相应的密钥文件路径和密码。

如果以上方法都不能解决问题,请检查网络连接、防火墙、SSH服务等相关配置,或者联系系统管理员以获得进一步帮助。

以下内容引用CHATGPT、有用望采纳:

你好,根据你的描述,可能是以下几个原因导致的:

  1. SSH密钥文件权限问题:请确保你的SSH密钥文件的权限正确,一般应该是600或者400。你可以使用以下命令来修改权限:
chmod 600 ~/.ssh/id_rsa
  1. SSH主机安全性问题:当你第一次连接一个未知的SSH主机时,SSH会提示你是否信任该主机。你需要输入"yes"来确认信任该主机。如果你输入了"no",那么下次连接该主机时,SSH会提示你无法确定该主机的安全性。你可以使用以下命令来清除已知主机列表:
ssh-keygen -R hostname

其中,"hostname"是你要清除的主机名。

  1. SSH密钥未注册问题:如果你使用了新的SSH密钥文件,你需要将该密钥文件注册到你的服务器中。你可以使用以下命令将密钥文件添加到服务器的authorized_keys文件中:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

其中,"username"是你的用户名,"remote_host"是你的服务器地址。这个命令会将你的SSH公钥添加到服务器的authorized_keys文件中,从而允许你使用SSH密钥进行登录。

希望以上解决思路能够对你有所帮助。如果还有问题,请随时回复。

引用chatGPT作答,这个错误提示说明你的电脑无法验证你正在连接的远程服务器的身份,因此你需要选择是或否来确认连接。如果你确定这是你要连接的服务器,可以选择“是”来继续连接。

关于密钥文件的权限问题,可能是因为密钥文件的权限设置过高,导致你无法读取该文件。你可以尝试将密钥文件的权限设置为只读,或者将该文件复制到一个你有权限访问的目录中。

至于FinalShell连接服务器时提示密钥未注册的问题,可能是因为你需要将你的公钥添加到远程服务器的authorized_keys文件中。你可以使用ssh-copy-id命令将公钥复制到远程服务器上,然后再次尝试连接。

如果以上方法无法解决问题,你可以尝试检查你的ssh配置,确保你的密钥文件和配置文件正确,并且你正在连接的服务器已经正确配置了ssh服务。

不要乱搞 服务器的SSH,如果是Azure里的VM 一般ssh你不乱改,不会出问题,如果已经有问题了,建议重置一下:


img


另外就时候你可以先检查一下你的VM 网络是不是有什么限制:

这个图是所有网络都可以连接的,打开了SSH 22端口


img


另外如何重置后获取新的秘钥:

img


这上述的没有打开,ChatGPT再怎么使劲回答也白扯

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个问题可能有不同的原因:

  1. 主机安全性提示

如果你用SSH连接到一个以前没有连接过的主机,会提示“无法确定主机安全性”(ssh的安全机制),让你选择“yes”或“no”。选择“yes”后ssh会将这个主机的公钥添加到一个known_hosts文件中,下次再连接时就不会提示这个问题了。如果你选择“no”,下次再连接时ssh还是会提示这个问题。

  1. 密钥文件的权限

另外一个可能的原因是你的密钥文件的权限不正确。你可以使用以下命令设置正确的权限:

chmod 600 <path_to_key_file>

其中 <path_to_key_file> 是你的密钥文件的路径和名称。

  1. 密钥未注册

如果你使用 FinalShell 连接服务器时提示密钥未注册,则可能是因为你需要使用 FinalShell 应用程序来生成和管理SSH密钥对。你需要将你的公钥复制到云服务器中的 ~/.ssh/authorized_keys 文件中。你可以通过以下步骤来操作:

  • FinalShell 中生成SSH密钥对(如果还没有)。
  • 打开一个终端窗口,使用以下命令创建 ~/.ssh 目录:
mkdir -p ~/.ssh
  • 使用以下命令将你的公钥拷贝到 authorized_keys 文件中:
echo "<your_public_key>" >> ~/.ssh/authorized_keys

其中 <your_public_key> 是你的公钥字符串。

  • 最后,确保 ~/.ssh 目录和 authorized_keys 文件的权限正确。使用以下命令可以设置正确的权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

希望这些解答可以帮助你解决问题。
如果我的回答解决了您的问题,请采纳!