006关于ssh密钥识别错误

本文详细介绍了SSH的连接过程,包括使用密钥对进行安全登录的步骤,如制作密钥对、安装公钥、设置SSH配置、重启SSH服务以及手动或使用ssh-copy-id命令上传公钥。同时,针对SSH连接出现的主机密钥不匹配问题,提供了删除known_hosts文件中特定主机信息的解决方案,确保安全无故障的SSH连接。
摘要由CSDN通过智能技术生成

ssh正常成功连接

正常指令
ssh -p <端口号> <用户名>@<机器ip>

大部分情况下这样可以直接输入密码连接了

密钥链接
1. 制作密钥对

首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:

[root@host ~]$ ssh-keygen  <== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

密钥锁码在使用私钥时必须输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。

现在,在 root 用户的家目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。

2. 在服务器上安装公钥

键入以下命令,在服务器上安装公钥:

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh
3. 设置 SSH,打开密钥登录

编辑 /etc/ssh/sshd_config 文件,进行如下设置:

RSAAuthentication yes
PubkeyAuthentication yes

另外,请留意 root 用户能否通过 SSH 登录:

PermitRootLogin yes

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthentication no
4,重启 SSH 服务:
[root@host .ssh]$ service sshd restart
5,手动上传公钥

生成密钥以后,公钥必须上传到服务器,才能使用公钥登录。

OpenSSH 规定,用户公钥保存在服务器的~/.ssh/authorized_keys文件。你要以哪个用户的身份登录到服务器,密钥就必须保存在该用户主目录的~/.ssh/authorized_keys文件。只要把公钥添加到这个文件之中,就相当于公钥上传到服务器了。每个公钥占据一行。如果该文件不存在,可以手动创建。

用户可以手动编辑该文件,把公钥粘贴进去,也可以在本机计算机上,执行下面的命令。

$ cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

上面示例中,user@host要替换成你所要登录的用户名和主机名。

注意,authorized_keys文件的权限要设为644,即只有文件所有者才能写。如果权限设置不对,SSH 服务器可能会拒绝读取该文件。

$ chmod 644 ~/.ssh/authorized_keys

只要公钥上传到服务器,下次登录时,OpenSSH 就会自动采用密钥登录,不再提示输入密码。

$ ssh -l username shell.isp.com
Enter passphrase for key '/home/you/.ssh/id_dsa': ************
Last login: Mon Mar 24 02:17:27 2014 from ex.ample.com
shell.isp.com>

上面例子中,SSH 客户端使用私钥之前,会要求用户输入密码(passphrase),用来解开私钥。

6,ssh-copy-id 命令:自动上传公钥

OpenSSH 自带一个ssh-copy-id命令,可以自动将公钥拷贝到远程服务器的~/.ssh/authorized_keys文件。如果~/.ssh/authorized_keys文件不存在,ssh-copy-id命令会自动创建该文件。

用户在本地计算机执行下面的命令,就可以把本地的公钥拷贝到服务器。

$ ssh-copy-id -i key_file user@host

上面命令中,-i参数用来指定公钥文件,user是所要登录的账户名,host是服务器地址。如果省略用户名,默认为当前的本机用户名。执行完该命令,公钥就会拷贝到服务器。

注意,公钥文件可以不指定路径和.pub后缀名,ssh-copy-id会自动在~/.ssh目录里面寻找。

$ ssh-copy-id -i id_rsa user@host

上面命令中,公钥文件会自动匹配到~/.ssh/id_rsa.pub

ssh-copy-id会采用密码登录,系统会提示输入远程服务器的密码。

注意,ssh-copy-id是直接将公钥添加到authorized_keys文件的末尾。如果authorized_keys文件的末尾不是一个换行符,会导致新的公钥添加到前一个公钥的末尾,两个公钥连在一起,使得它们都无法生效。所以,如果authorized_keys文件已经存在,使用ssh-copy-id命令之前,务必保证authorized_keys文件的末尾是换行符(假设该文件已经存在)。

ssh不正常连接

可是…今天我就发生了这个离谱的事…

someone could be eavesdropping on you right now (man-in-the-middle attack) ssh…

有可能有人在做一些下流的事情!

现在可能有人正在窃听你(中间人攻击)!

也可能是主机密钥刚刚被更改。

分析

当您通过 SSH 连接到服务器时,它会获取ECDSA密钥的指纹,然后将其保存到您的主目录下的~/.ssh/known_hosts. 这是在第一次连接到服务器后完成的,并且会提示您这样的消息。如果输入“是”,则指纹将保存到known_hosts文件中,SSH 会在您每次连接到该服务器时查询该文件。

由于远程机器或者重组或者更新了ssh server导致本地记录的验证信息过时了不想删除**known_hosts文件(**因为有很多机器的信息都在这文件里)

解决方法

不想删除不想删除known_hosts文件(因为有很多机器的信息都在这文件里)

可以利用 这个命令来删掉关于特定的远程机器的host信息。

linux
ssh-keygen -R [远程机器ip]:port
mac
vim /Users/xuxian/.ssh/known_hosts

删掉提示错误的行,有关的行

Offending ED25519 key in /Users/xuxian/.ssh/known_hosts:2

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tree_Root.

大佬给点饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值