Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu “当”时如何建立ssh密钥对;主机密钥验证失败“;_Ubuntu_Ssh_Foreign Keys - Fatal编程技术网

Ubuntu “当”时如何建立ssh密钥对;主机密钥验证失败“;

Ubuntu “当”时如何建立ssh密钥对;主机密钥验证失败“;,ubuntu,ssh,foreign-keys,Ubuntu,Ssh,Foreign Keys,我已经在我的桌面和两台服务器之间以及从服务器到桌面之间设置了ssh密钥对,但是在我的桌面上重新安装操作系统后,我无法通过以下方式重新建立进入桌面的密钥对: mkdir~/.ssh chmod 700~/.ssh ssh-keygen-t ssh副本idusername@server 我得到以下错误: (为了保护无辜,我的桌面是Ubuntu,我的名字改成了斜体,但我找不到答案) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

我已经在我的桌面和两台服务器之间以及从服务器到桌面之间设置了ssh密钥对,但是在我的桌面上重新安装操作系统后,我无法通过以下方式重新建立进入桌面的密钥对:

mkdir~/.ssh
chmod 700~/.ssh
ssh-keygen-t
ssh副本idusername@server
我得到以下错误:

(为了保护无辜,我的桌面是Ubuntu,我的名字改成了斜体,但我找不到答案)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @警告:远程主机标识已更改@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 有可能是有人在做坏事! 现在可能有人在偷听你(中间的人) 攻击)! 也可能是RSA主机密钥刚刚更改。 远程主机发送的RSA密钥的指纹为 ab:cd:ef:gh 请与您的系统管理员联系。 在/home/user/.ssh/known_hosts中添加正确的主机密钥以获取 删除此消息。 在/home/user/.ssh/known_主机中有问题的密钥:1 user.server的RSA主机密钥已更改,您已请求严格的 检查。 主机密钥验证失败

或者打开它并删除有问题的ip/主机名的条目


(另一方面,它在您发布的错误消息中准确地告诉您这一点)

如果您确信服务器是正确的,
sed-i1d~/.ssh/known_hosts
将删除本地
~/.ssh/known_hosts
的第1行。下次连接时,新的正确密钥将添加到文件中

ssh-keygen -R hostname
这将从
已知的\u主机中删除有问题的密钥

手册页条目如下:

-R hostname
从已知的\u hosts文件中删除属于hostname的所有密钥。此选项对于删除哈希主机很有用(请参阅-H选项) 上文)


有时在串行控制台上工作时也会出现这种情况,然后在详细模式下检查上述命令
-v
将显示/dev/tty不存在,而它确实存在。


在上述情况下,只需删除/dev/tty并创建一个/dev/ttyS0到/dev/tty的符号链接。

很可能,远程主机ip或ip_别名不在~/.ssh/known_hosts文件中。你 可以使用以下命令将主机名添加到已知的\u hosts文件中

#!/bin/bash
#Jason Xiong: Dec 2013   
# The ip or ipalias stored in known_hosts file is hashed and   
# is not human readable.This script check if the supplied ip    
# or ipalias exists in ~/.ssh/known_hosts file

if [[ $# != 2 ]]; then
   echo "Usage: ./search_known_hosts -i ip_or_ipalias"
   exit;
fi
ip_or_alias=$2;
known_host_file=/home/user/.ssh/known_hosts
entry=1;

cat $known_host_file | while read -r line;do
  if [[ -z "$line" ]]; then
    continue;
  fi   
  hash_type=$(echo $line | sed -e 's/|/ /g'| awk '{print $1}'); 
  key=$(echo $line | sed -e 's/|/ /g'| awk '{print $2}');
  stored_value=$(echo $line | sed -e 's/|/ /g'| awk '{print $3}'); 
  hex_key=$(echo $key | base64 -d | xxd -p); 
  if  [[ $hash_type = 1 ]]; then      
     gen_value=$(echo -n $ip_or_alias | openssl sha1 -mac HMAC \
         -macopt hexkey:$hex_key | cut -c 10-49 | xxd -r -p | base64);     
     if [[ $gen_value = $stored_value ]]; then
       echo $gen_value;
       echo "Found match in known_hosts file : entry#"$entry" !!!!"
     fi
  else
     echo "unknown hash_type"
  fi
  entry=$((entry + 1));
done
$ssh keyscan-H-t rsa ip\u或ipalias>~/.ssh/known\u主机

此外,我还生成了以下脚本,以检查特定ip或IPALIA是否在know_hosts文件中

#!/bin/bash
#Jason Xiong: Dec 2013   
# The ip or ipalias stored in known_hosts file is hashed and   
# is not human readable.This script check if the supplied ip    
# or ipalias exists in ~/.ssh/known_hosts file

if [[ $# != 2 ]]; then
   echo "Usage: ./search_known_hosts -i ip_or_ipalias"
   exit;
fi
ip_or_alias=$2;
known_host_file=/home/user/.ssh/known_hosts
entry=1;

cat $known_host_file | while read -r line;do
  if [[ -z "$line" ]]; then
    continue;
  fi   
  hash_type=$(echo $line | sed -e 's/|/ /g'| awk '{print $1}'); 
  key=$(echo $line | sed -e 's/|/ /g'| awk '{print $2}');
  stored_value=$(echo $line | sed -e 's/|/ /g'| awk '{print $3}'); 
  hex_key=$(echo $key | base64 -d | xxd -p); 
  if  [[ $hash_type = 1 ]]; then      
     gen_value=$(echo -n $ip_or_alias | openssl sha1 -mac HMAC \
         -macopt hexkey:$hex_key | cut -c 10-49 | xxd -r -p | base64);     
     if [[ $gen_value = $stored_value ]]; then
       echo $gen_value;
       echo "Found match in known_hosts file : entry#"$entry" !!!!"
     fi
  else
     echo "unknown hash_type"
  fi
  entry=$((entry + 1));
done
步骤1:$Bhargava.ssh#

ssh-keygen-R 199.95.30.220

步骤2:$Bhargava.ssh#

ssh副本idhostname@199.95.30.220

步骤3:Bhargava.ssh#

sshhostname@199.95.30.220


hostname@qt:~$

这表示您的远程主机密钥已更改(可能是主机密码更改)

您的终端建议以root用户身份执行此命令

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231
您必须从pc/服务器上的主机列表中删除该主机名。复制建议的命令并以root用户身份执行

$ sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ sudo ssh root@www.website.net -p 4231                              // Try again

我希望这能起作用。

首先您应该删除现有密钥。大多数基于Linux的操作系统中的SSH密钥将保存在该文件“/root/.SSH/known_hosts”中,因此为了删除与主机相关的密钥,将使用以下命令:

ssh-keygen-f”/root/.ssh/known_hosts“-R[主机名]

问候
K1

针对suer的任务无密码身份验证

错误:主机密钥验证失败

资料来源:10.13.1.11 目标:10.13.1.35

临时解决办法:

[user@server~]$sshuser@10.13.1.35 无法确定主机“10.13.1.35(10.13.1.35)”的真实性。 RSA密钥指纹是b8:ba:30:46:a9:ab:70:12:1a:f2:f1:61:69:73:0a:19。 是否确实要继续连接(是/否)?对 警告:已将“10.13.1.35”(RSA)永久添加到已知主机列表中


再次尝试对用户进行身份验证…它将起作用。

当主机密钥过期或更改时,会出现此问题。您可以删除主机正在使用的密钥并再次尝试ssh,以便添加客户端和服务器都知道的新密钥

您可以使用
cat/.ssh/known_hosts
检查与主机关联的密钥。现在,您可以手动或使用ssh-keygen选项删除主机密钥。您可以执行以下任一选项

  • 手动取下钥匙

    vim/.ssh/known_主机

  • 删除与主机关联的密钥

  • 使用ssh-keygen删除密钥

    ssh keygen-R您的\u主机\u或\u主机\u ip

  • 这将删除与主机关联的密钥


    现在,您可以像往常一样使用ssh连接到主机,系统会询问您是否要继续连接到此主机。输入yes后,此主机将添加到具有更新密钥的/.ssh/known_主机。现在,您应该是您的主机。

    当您尝试使用ssh连接远程服务器时:

    $ ssh username@ip_address
    
    然后出现错误,要解决它:

    $ ssh-keygen -f "/home/local_username/.ssh/known_hosts" -R "ip_address"
    

    我试过了,但从主机(我的桌面)而不是来宾(我从桌面登录的服务器)删除了文件。感谢您的提醒…您不必删除整个文件…@ephemient:在如何删除整个文件的示例之后,我们会适当地注意到这一点;)我打开了我电脑上的已知主机文件,它看起来很神秘。我喜欢你的回答。只是看起来我稍微打败了你@此外,我很想知道您是否知道,除了(下次)第一次尝试连接到已知主机中的IP时发出的警告之外,删除整个文件会有其他缺点。它是否真的会破坏任何东西,或者只是一个稍微烦人的警告?很好的解决方案。但是,这难道不是假设所涉及的服务器(在本例中是我的桌面)是文件的第一行吗?我发现“ssh-keygen-F hostname”告诉这行主机名密钥是打开的,因此假设sed-I nd~/.ssh/know_hosts可以工作,如果
    $ ssh username@ip_address
    
    $ ssh-keygen -f "/home/local_username/.ssh/known_hosts" -R "ip_address"