首页 > 其他分享 >创建并使用私钥privateKey登录 SSH 服务器

创建并使用私钥privateKey登录 SSH 服务器

时间:2023-02-05 23:35:41浏览次数:41  
标签:私钥 登录 privateKey rsa SSH StrictHostKeyChecking id ssh

使用privateKey登录 SSH 服务器是什么意思呢?

我们平时登录Linux服务器的时候,经常是使用用户名和密码进行登录,但是如果我们要使用它进行代码连接或者其他操作的情况下,我们需要一种更为安全的方式进行登录,就需要privateKey登录 SSH 服务器

SSH 登录简介

  • RSA 非对称加密
  • 在 SSH 登录时可以使用 RSA 密钥登录
  • 使用工具ssh-keygen可以创建 SSH 密钥

如何创建?

服务器生成密钥对(ubuntu)

进入 Linux 系统目录下 .ssh 目录

cd ~/.ssh/

此时看到报错-bash: cd: /root/.ssh/: 没有那个文件或目录

[root@localhost ~]# cd ~/.ssh/
-bash: cd: /root/.ssh/: 没有那个文件或目录

解决报错

执行

ssh localhost

报错解决,大功告成~

执行 ls 命令,我们可以看到此时目录

执行 ssh-keygen 创建密钥对

执行密钥生成命令,回车~
执行过程中可以选择是否输入秘钥密码,也可以选择不需要密码哦~直接回车

ssh-keygen -t rsa

命令生成之后,查看一下

id_rsa  id_rsa.pub  known_hosts

SSH 服务器配置(ubuntu)

我们发现目录下没有 authorized_keys,我们创建一个

touch authorized_keys

将 id_rsa.pub 文件的内容输出到 authorized_keys

cat id_rsa.pub >> authorized_keys 

远程访问测试

以windows电脑为例,我们访问一下我们是否可以通过privateKey登录 SSH 服务器

将 id_rsa 私钥拷贝到 Windows电脑上面,然后进入私钥所在目录,执行命令:

ssh -i .\id_rsa  [email protected]

再次发现异常,The authenticity of host 'XXX' can't be established.

PS C:\Users\Administrator\Desktop\fsdownload> ssh -i .\id_rsa  [email protected]
The authenticity of host '192.168.33.129 (192.168.33.129)' can't be established.
ECDSA key fingerprint is SHA256:dw6kUF1VDfJ9WXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.33.129' (ECDSA) to the list of known hosts.

分析

原因在于每次远程登录Linux的时候,Linux都要检查一下,当前访问的计算机公钥是不是在~/.ssh/know_hosts中,这个文件时OpenSSH记录的。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来配置的。默认情况下,StrictHostKeyChecking=ask。简单所下它的三种配置值:

  • 1.StrictHostKeyChecking=no 最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。
  • 2.StrictHostKeyChecking=ask 默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。
  • 3.StrictHostKeyChecking=yes 最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。

解决

我们用下面的命令登录

ssh -i .\id_rsa -o StrictHostKeyChecking=no [email protected]

还有一种彻底去掉SSH主机验证的方法,就是修改/etc/ssh/ssh_config配置文件,在ssh_config配置文件中添加:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

大功告成~

今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

标签:私钥,登录,privateKey,rsa,SSH,StrictHostKeyChecking,id,ssh
From: https://www.cnblogs.com/sugartang/p/17094185.html

相关文章

  • Python黑客编程之SSH反向隧道
    目的情况假设:攻击机A可以访问肉鸡B,肉鸡B可以访问内网web服务器C,但是攻击机没法直接访问web服务器C办法:在攻击机A和肉鸡B上建立ssh隧道,将web服务器C的端口8080映射到攻击......
  • SSH协议中隧道与代理的用法测试
    一、测试拓扑eth1:10.1.1.100    eth0:192.168.211.130            eth0:192.168.211.138   eth1:20.1.1.200       ......
  • Docker 安装 Centos7 并开启 ssh 服务
    本文将简单记录下Docker中安装CentOS7并开启ssh服务的操作过程及命令。一、在宿主机终端下依次执行如下命令:#拉取centos7镜像dockerpullcentos:7#创建并......
  • ssh远程登录协议和tcp
     SSH远程管理 SSH远程管理SSH解释:SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通......
  • Redhat9无法ssh远程连接上
    Redhat9无法ssh远程连接上红帽宣布RedHatEnterpriseLinux9(RHEL9)已可用,这是世界领先的企业Linux平台的最新版本。RHEL9提供了更灵活和稳定的基础,以支持混合云创新......
  • 简单三步ssh连接到虚拟机中的ubuntu
       设置共享文件夹1.首先安装这个工具VMwaretool,具体操作就是在ubuntu里面解压,然后sudo执行那个pl安装脚本2.执行命令挂载共享文件夹   sudovmhgfs-fuse......
  • gitee生成ssh公钥
    没有git管理工具首先安装:https://git-scm.com/downloads/第一步,鼠标右击,选择GitBashHere,输入如下指令ssh-keygen-trsa-C"[email protected]"然后敲四次回车生成......
  • jenkins中ssh远程无法执行javac命令
    最近发现有个项目修改后在jenkins发布不生效,查找原因,根据输出的日志发现javac命令不存在,但是登录上服务器发现手动输入执行javac 相关命令是没问题的,于是在jenkins中添加......
  • jenkins配置和使用使用git,ssh方式
    1.安装githttps://blog.csdn.net/jsboy123/article/details/806172312.生成git秘钥和私钥ssh-keygen-trsa3.查看公钥并配置到自己的项目中cat.ssh/id_rsa.pub4.jenkins......
  • KingbaseES V8集群运维案例之---系统用户修改密码或过期对ssh互信的影响
    案例说明:KingbaseV8主备流复制集群在通用机环境部署和运维,需要建立主机间的ssh互信,如果ssh互信被破坏,将导致集群故障。但有的生产环境为了系统安全需要,会配置密码管理策......