Linux ~/.ssh目录详解和密钥对使用

这篇具有很好参考价值的文章主要介绍了Linux ~/.ssh目录详解和密钥对使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

.ssh目录内容

Linux中,每个用户的根目录下都有一个.ssh目录,保存了ssh相关的key和一些记录文件。例如:

root@ubuntu:~/.ssh# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts  known_hosts.old

使用ssh-keygen生成key

ssh-keygen可以生成ssh协议所需要的公钥和私钥,例如:

ssh-keygen -t rsa

此命令将生成一个私钥文件(默认为id_rsa)和一个公钥文件(默认为id_rsa.pub)。
其中私钥是必须保存在.ssh目录中的,只有该主机的该用户可以使用。而公钥是给需要使用ssh验证的服务器,使用密钥对可以免密码验证,比如ssh,scp,rsync等。

known_hosts 和 known_hosts.old

known_hostsknown_hosts.old是SSH客户端中的文件,用于存储已知主机的公钥信息。以下是它们的作用和功能:

  1. known_hosts文件:这个文件包含了您曾经连接过的远程主机的公钥信息。当您首次连接一个远程主机时,SSH客户端会将该主机的公钥保存在known_hosts文件中。下次再次连接该主机时,客户端会验证主机的公钥是否与之前保存的一致,以防止中间人攻击。如果主机的公钥发生变化,客户端会发出警告,以提醒您进行确认。

  2. known_hosts.old文件:当SSH客户端检测到known_hosts文件发生了变化(比如主机公钥发生了更改)时,它会将原始的known_hosts文件备份为known_hosts.old。这样,您可以在需要时恢复到旧的已知主机配置。

这些文件通常位于SSH客户端用户的~/.ssh/目录下,每个用户都有自己的独立副本。

请注意,known_hosts文件不包含任何敏感信息,它只存储了公钥信息以供身份验证使用。但是,如果您的系统存在安全问题,有人可能会通过欺骗您来窃取您的密钥,因此当发现known_hosts文件发生变化时,务必审查和验证公钥的有效性。

authorized_keys文件

authorized_keys文件位于SSH服务器上,用于存储允许访问该服务器的客户端的公钥。当您希望使用密钥进行SSH身份验证时,您需要将您的公钥添加到目标服务器的authorized_keys文件中。只有在authorized_keys文件中列出的公钥才能成功进行身份验证并获得访问权限。

authorized_keys文件的作用是配置服务器允许哪些客户端使用密钥进行身份验证。每个客户端的公钥都需要在该文件中有相应的条目才能成功进行身份验证。

known_hosts和authorized_keys的区别

虽然known_hosts和authorized_keys两个文件都涉及到存储其他主机的公钥信息,但它们在SSH身份验证过程中的角色和功能是不同的。
known_hosts文件用于SSH客户端验证远程主机的身份,而authorized_keys文件用于SSH服务器验证客户端的身份。它们在SSH连接过程中扮演了不同的角色,并且存储的公钥信息也有不同的来源和目的。
你可能在.ssh目录中同时看到known_hosts和authorized_keys文件,因为这个主机即可以作为ssh客户端去连接其他主机,也可以作为ssh服务器被其他主机连接,因此这两个文件就都存在。

公钥使用举例:rsync免密同步文件

使用rsync同步文件时,我们可以在目标主机用户上保存当前主机用户的公钥,以实现免密同步文件。文章来源地址https://www.toymoban.com/news/detail-642859.html

  • 首先,保证我们的客户端主机的当前用户已经有密钥对,如果没有就使用ssh-keygen生成一对。
  • 如果我们知道目标主机用户的authorized_keys文件是空的,可以使用以下方法将客户端的公钥复制到目标主机上的~/.ssh/authorized_keys文件中:
  • ssh-copy-id -i ~/.ssh/id_rsa.pub user@target_host
    替换user为目标主机上的用户名,target_host为目标主机的IP地址或主机名。执行此命令后,系统会要求您输入目标主机的密码。
    如果ssh-copy-id命令不可用,请手动将公钥内容复制到目标主机的~/.ssh/authorized_keys文件中。
  • 但很有可能,目标主机用户的authorized_keys文件已经保存了其他客户端的公钥信息,所以我们大概率不能覆盖这个文件。但我们可以将自己的公钥信息添加到这个文件末尾。
    1. 首先,将我们的公钥文件上传到目标主机上:
      scp -P 22 ~/.ssh/id_rsa.pub user@target_host:/tmp/id_rsa.pub
      
      替换user为目标主机上的用户名,target_host为目标主机的IP地址或主机名。-P选项可以设置ssh服务的端口,如果目标主机的ssh服务是其他端口,请在这儿替换。
    2. 追加公钥到现有文件:登录到目标主机,并将公钥追加到~/.ssh/authorized_keys文件的末尾。在目标主机上运行以下命令:
      cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
      
    3. 清理临时文件(可选):可以在目标主机上删除临时公钥文件。运行以下命令:
      rm /tmp/id_rsa.pub
      
      现在,您已成功将公钥添加到目标主机上现有的~/.ssh/authorized_keys文件的末尾,而不会覆盖它。
  • 使用ssh登录验证
    向目标主机的user用户的.ssh/authorized_keys中添加源主机用户的公钥信息后,就可以直接使用ssh免密登录了:
    ssh user@target_host
    
    如果一切顺利,您应该能够在不输入密码的情况下成功登录到目标主机。
  • 使用rsync同步文件
    rsync -avz -e "ssh -p 22" /path/to/source user@target_host:/path/to/destination
    
    替换/path/to/source为源文件或目录的路径,user为目标主机上的用户名,target_host为目标主机的IP地址或主机名,/path/to/destination为目标文件或目录的路径。
    在使用rsync命令时,指定了-e "ssh -p 22"选项,它告诉rsync使用22端口进行SSH连接。由于您已经设置了密钥身份验证,rsync将使用密钥进行身份验证,而不需要输入密码。

到了这里,关于Linux ~/.ssh目录详解和密钥对使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用ssh密钥的方式实现无密码scp传输文件

    在介绍如何使用SSH密钥的方式实现无密码SCP传输文件之前,我们先来了解一下什么是SSH公钥/私钥。 SSH公钥和私钥是一对密钥,用于加密您的登录信息和授权您的访问。公钥存储在服务器上,私钥存储在您的本地电脑上。当您通过SSH协议连接到服务器时,您的本地电脑会使用

    2024年02月06日
    浏览(69)
  • 掌握终端基础技巧:Linux下的文件和目录复制操作

    在Linux系统中,命令行终端是一个大而高效的工具,让使用者可以通过简单的命令完成各种任务。其中,文件和目录的复制操作是日常使用频率较高的一项操作。本文将介绍Linux下的文件和目录复制基础技巧,帮助您更好地掌握命令行终端的使用。 一、复制文件: 1.cp命令:

    2024年02月08日
    浏览(38)
  • 【linux】搜索所有目录和子目录下的包含.git的文件并删除

    在Linux系统中,要搜索所有目录和子目录下的包含`.git`的文件,可以使用`find`命令。`find`命令允许指定路径、表达式和操作来查找文件。 以下是使用`find`命令搜索包含`.git`的文件的方法: 1. 基本搜索:    find /path/to/search -type f -name \\\"*.git*\\\"    这将在指定的路径下搜索所有扩

    2024年03月22日
    浏览(73)
  • linux 查看文件夹下的文件个数(当前目录的文件数)

    linux 查看文件夹下的文件个数(当前目录的文件数) 查看文件夹下的文件个数(当前目录的文件数) 说明: ls -l : 长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等) grep ^- : 这里将长列表输出信息过滤一部分,只保留一般文件,如

    2024年02月16日
    浏览(38)
  • 【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

    创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen ,之后一直按Enter即可,这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意:也可以在 windows 端生成密钥,只需要保证公钥在服务器端,私钥在本地端即可。 安装 在服务器端 ~/.ssh/ 路径下执行以下命令,在

    2024年02月16日
    浏览(40)
  • Windows下使用SSH密钥实现免密登陆Linux服务器

    工具: win10、WinSCP 生成ssh密钥: 打开终端,使账号密码登录,输入命令 会提示密钥存放路径,一般存放在默认路径,直接回车即可,中间会提示输入密码,这里需要注意,如果设置密码,则每次登陆的时候需要输入此密码来登陆,如果不输入密码的话可以直接使用密钥登陆

    2023年04月14日
    浏览(39)
  • Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

    2.1.1、Linux是什么? Linux是一个操作系统(OS) 所谓的操作系统就是直接用来操作计算机底层硬件的软件。 2.1.2、Linux的出现 官网: https://www.centos.org/ 进入官网进行下载 有很多的镜像,以阿里云的为例: 3.3.1、下载 官网: https://www.vmware.com/ 这是下载的企业版,30天试用期,可

    2024年02月05日
    浏览(50)
  • Ceph入门到精通-远程开发Windows下使用SSH密钥实现免密登陆Linux服务器

    工具: win10、WinSCP 打开终端,使账号密码登录,输入命令 Downloading WinSCP-6.1.1-Setup.exe :: WinSCP 打开powershell  ssh-keygen -t rsa 注意路径 点击高级 工具有个向服务器推送公钥 powershell ssh root@192.xxxx        

    2024年02月14日
    浏览(39)
  • linux下创建ssh账号并设置指定使用目录

    场景:在linux系统下创建用户,并使用xshell登录,一般我们使用key登录,安全性高 1.使用xshell连接服务器,使用root账号 sudo su 2.创建一个新的系统用户,使用以下命令: sudo useradd -m username 3.设置该用户的密码,使用以下命令: sudo passwd username 系统将提示你输入该用户的新密码

    2024年02月05日
    浏览(29)
  • Linux创建SSH密钥、设置密钥登录、密钥登录原理

    Linux有2种登录方式: 使用用户名加密码的登录方式; 密钥登录; 密钥登录: SSH登录是用的RSA非对称加密的,SSH密钥登录的时候可使用RSA密钥登录,SSH有专门创建SSH密钥的工具 ssh-keygen 一般的密码方式登录,容易有密码被暴力破解的问题。 将 SSH 的端口设置为默认的 22 以外的

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包