• OS + Linux sshkeygen / sshcopyid / id_rsa / id_rsa.pub / authorized_keys


    s

    Ansible自动部署lnmp架构+上线电商

    https://www.cnblogs.com/Zrecret/p/12072289.html

    ssh-keygen和ssh-copy-id实现免密登录远程主机

    https://blog.csdn.net/feinifi/article/details/78213297

    Linux上用ssh-keygen和ssh-copy-id实现SSH免密码登录

    https://www.jianshu.com/p/9343162246cd

    SSH-KEYGEN和SSH-COPY-ID的简单使用

    https://www.cnblogs.com/wzhuo/p/7125958.html

    使用 ssh-keygen 和 ssh-copy-id 配置 SSH 密钥实现免密登陆

    https://p3terx.com/archives/configuring-ssh-keys-with-sshkeygen-and-sshcopyid.html

    使用 Xshell 给 Linux VPS 配置 SSH 密钥实现免密登录

    https://p3terx.com/archives/configuring-ssh-key-with-xshell.html

    使用 Xshell 给 Linux VPS 配置 SSH 密钥实现免密登录

    https://p3terx.com/archives/configuring-ssh-key-with-xshell.html

    SSH 提供两种认证方式,密码认证和密钥认证,一般我们买来的 VPS 都是密码认证。

    密码的缺点是很容易被暴力破解,而且密码需要记忆,使用起来麻烦。

    密钥的好处是,你只需要一对密钥文件:公钥和私钥,公钥相当于门锁,装在 VPS 上,私钥相当于钥匙,放在本地计算机上,登录的过程就像是用钥匙去开锁,有钥匙的人才能打得开,不仅安全,而且方便。

    此外,公钥可以复制到其它主机和账户,这就像是你装了很多同样门锁。 

    信任登陆步骤:先在机器A生成公钥,然后将机器A公钥复制到远程主机机器B,接着就可以免密登录远程主机机器B。远程主机上的authorized_keys文件中可以保存多个公钥。多个公钥直接追加在末尾。

    过程似乎与我们想象的不太一样,我们可能希望远程主机免密登录本机。

    好比我要去朋友家,我先将我们家的钥匙放在朋友家,结果我就可以随便进入朋友家里。

    正常来说,我家钥匙在朋友家里,应该是朋友随便进入我家。通过实验我们来看是什么样的。 

    序号

    机器A = 192.168.1.2

    node01.lindows.com

    机器B = 192.168.1.3

    node02.lindows.com

    备注

    1

    #开始生成公钥(id_rsa.pub)和私钥(id_rsa),输入如下命令:

    [root@~ node01]#ssh-keygen

    [root@~ node01]#ssh-keygen -t rsa -P ""

    #其后也可以跟-P表示输入密码;

    [root@~ node01]#ssh-keygen -t rsa -P "123456"

    [root@~ node01]#ls /root/.ssh/*

    id_rsa  id_rsa.pub

    #查看生成的id_rsa.pub公钥文件

    d

    -
    2

    #从机器A传送id_rsa.pub公钥文件到机器B

    [root@~ node01]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.1.3

    #机器B查看是否传送到位,新增authorized_keys文件

    #传送之前
    [root@~ node02]# ls /root/.ssh
    known_hosts
    #传送之后:authorized_key为传过来
    [root@~ node02]# ls /root/.ssh
    authorized_keys known_hosts

    [root@~ node02]# chmod 700 ~/.ssh

    [root@~ node02]# chmod 600 ~/.ssh/authorized_keys

    [root@~ node02]# cat /root/.ssh/authorized_keys

    d

     
    3

    #机器A可以免密登陆机器B了

    [root@~ node01]# ssh 192.168.1.3

    [root@~ node01]# ssh -i /root/.ssh/id-rsa 192.168.1.3 -p 22

    [root@~ node01]# ssh -i /root/.ssh/私钥文件 192.168.1.3 -p 22

     -  
    4 ssh免密登陆原理解析:

    ssh-keygen的过程,其实不光生成了id_rsa.pub,同时还生成了id_rsa这个文件,这个文件就是私钥,保存在本机的。
    ssh远程登录的过程,先是客户端请求远程主机,远程主机根据authorized_keys中本机公钥的内容加密一个请求,返回给客户端,客户端然后利用私钥对这个请求解密,再发送给远程主机,远程主机收到了准确的应答,即认为是该客户端是可信的,因此允许登录。该过程可以通过如下图所示更直观。

       
    5 ①机器Assh请求root@node02机器B ②机器B根据公钥authorized_keys记录查机器A(node01)的公钥,利用公钥加密口令,如testpwd  
    6   ③机器B发送加密口令给node01机器A  
    ④机器A利用私钥id_isa解密出口令testpwd    
    ⑤机器A将解密后的口令发送给node02机器B    
      ⑥机器B对比口令testpwd,若一致,同意登陆,否则拒绝  
    10

    /root/.ssh/id_rsa

    /root/.ssh/id_rsa.pub

    /root/.ssh/authorized_keys

    远程主机上的authorized_keys文件中可以保存多个公钥,多个公钥直接追加在末尾。

     

    ss

    使用 ssh-keygen 和 ssh-copy-id 配置 SSH 密钥实现免密登陆

    https://p3terx.com/archives/configuring-ssh-keys-with-sshkeygen-and-sshcopyid.html

    SSH 提供两种认证方式,密码认证和密钥认证,一般我们买来的 VPS 都是密码认证。密码的缺点是很容易被暴力破解,而且密码需要记忆,使用起来麻烦。密钥的好处是,你只需要一对密钥文件:公钥和私钥,公钥相当于门锁,装在 VPS 上,私钥相当于钥匙,放在本地计算机上,登录的过程就像是用钥匙去开锁,有钥匙的人才能打得开,不仅安全,而且方便。此外,公钥可以复制到其它主机和账户,这就像是你装了很多同样门锁。本篇教程将讲解在本地终端使用 ssh-keygen 和 ssh-copy-id 给 VPS 配置 SSH 密钥的方法以及使用 ssh 命令进行密钥登录方法,适用于 Win­dows 10 (1803 后) 的 Pow­er­Shell 或 WSL,Linux 发行版和 ma­cOS 自带的终端,但不仅限于这些环境。如果你在 Win­dows 下使用 Xshell ,那么推荐去看《使用 Xshell 给 Linux VPS 配置 SSH 密钥实现免密登录》这篇教程,配置起来相对更简单。

    便宜高性价比 VPS 推荐,其中 OneVPS 拥有无限流量,建站、网络加速还是离线下载都非常合适,最低月付仅4美元,使用优惠码ONEVPS可以打9折。

    使用 ssh-keygen 生成密钥对(私钥和公钥)

    在本地终端中执行 ssh-keygen 命令,提示都不用管,一路回车 (En­ter)。

    p3terx@hk2:~$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/p3terx/.ssh/id_rsa):
    Created directory '/home/p3terx/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/p3terx/.ssh/id_rsa.
    Your public key has been saved in /home/p3terx/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:qssp3ZnX0bgxbSUOlecZllcDAjX4nqjL3hA/HRtoGd8 p3terx@hk2
    The key's randomart image is:
    +---[RSA 2048]----+
    |         .++ o.oo|
    |         .  = = o|
    |         ... + + |
    |          *.o +  |
    |       .S+oX.E   |
    |       .+.*oO    |
    |   . ..+.+ O     |
    |  ...o=.+ +      |
    |   .=..=..       |
    +----[SHA256]-----+

    操作完后会在 ~/.ssh 目录中生两个密钥文件,id_rsa 为私钥,id_rsa.pub 为公钥。

    科普:~符号代表用户主目录,俗称家目录。其路径与当前登陆的用户有关,在 Linux 中普通用户家目录的路径是/home/用户名,而 root 用户是/root。Win­dowd 10 中路径是C:\Users\用户名。在 ma­cOS 中路径是/Users/用户名

    使用 ssh-copy-id 配置公钥

    执行以下命令自动将公钥上传并配置到 VPS 上:

    ssh-copy-id -i ~/.ssh/id_rsa.pub User@HostName -p Port
    -i为指定公钥路径,后面的~/.ssh/id_rsa.pub公钥路径。

     

    User 为用户名,HostName 为 IP 地址,Port 为端口号。

    ssh-copy-id 命令相当于执行了以下复杂的手动操作:

    • 复制公钥文件中的内容

      cat ~/.ssh/id_rsa.pub
    • 登录到远程主机

      ssh User@HostName -p Port
    • 创建 ~/.ssh 目录

      mkdir -p ~/.ssh
    • 把公钥文件写入到 ~/.ssh/authorized_keys

      vim ~/.ssh/authorized_keys
    • 设置权限

      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys

    所以使用 ssh-copy-id 大大简化了 SSH 密钥的配置过程。

    使用 ssh 命令进行密钥登录

    私钥存在于默认位置 (~/.ssh/id_rsa) 时,会优先使用密钥登录,所以执行的命令与密码登录没有区别。

    ssh User@HostName -p Port
    User 为用户名,HostName 为IP地址,Port为端口号。

    私钥为非默认名称或者不在 ~/.ssh 目录时,就需要指定私钥路径。比如我将 id_rsa 改成了 p3terx

    ssh -i ~/.ssh/p3terx User@HostName -p Port
    -i为指定私钥路径,后面的~/.ssh/p3terx私钥路径。

    使用 SSH 配置文件管理会话

    如果你有多个 VPS 使用不同密钥,那么使用 SSH 配置文件 ( ~/.ssh/config ) 进行管理是一种优雅且灵活的方式。这相当于在类似 Xshell 这样的图形化 SSH 工具中对每个 SSH 会话连接进行单独设置并保存起来,省去了重复输入复杂参数的过程。

    SSH 配置文件默认是不存在的,所以使用 nano 编辑器创建并编辑:

    nano ~/.ssh/config

    然后参照下面的例子进行填写。

    Host P3TERX_VPS
        HostName 233.233.233.233
        Port 2333
        User p3terx
        IdentityFile "~/.ssh/id_rsa"
        IdentitiesOnly yes
    
    Host P3TERX_VPS2
        HostName 66.66.66.66
        Port 6666
        User p3terx
        IdentityFile "~/.ssh/id_ecdsa"
        IdentitiesOnly yes
    Host 别名
    HostName 主机名,可以用 IP 地址或域名
    Port 端口,不填写默认为 22
    User 用户名
    IdentityFile 私钥的路径,可指定多个私钥,在连接的过程中会依次尝试。
    IdentitiesOnly 只接受 SSH key 登录

    编辑好保存并退出,然后设置权限,不然可能无法正常使用。

    chmod 600 ~/.ssh/config

    当以上操作完成,以后登录 VPS 就只需要在终端内输入 ssh Host 就可以登录到 VPS ,就像下面这样:

    ssh P3TERX_VPS

    禁用密码登录

    在确认使用密钥能正常登录后,为了提高 VPS 的安全性建议禁用密码登录。

    执行以下命令,对 sshd 配置文件 (/etc/ssh/sshd_config) 进行修改。

    sudo sed -i '/PasswordAuthentication /c\PasswordAuthentication no' /etc/ssh/sshd_config

    最后重启 sshd 服务,使配置生效。

    sudo service sshd restart

    使用 Xshell 给 Linux VPS 配置 SSH 密钥实现免密登录

    https://p3terx.com/archives/configuring-ssh-key-with-xshell.html

    前言

    SSH 提供两种认证方式,密码认证和密钥认证,一般我们买来的 VPS 都是密码认证。密码的缺点是很容易被暴力破解,而且密码需要记忆,使用起来麻烦。密钥的好处是,你只需要一对密钥文件:公钥和私钥,公钥相当于门锁,装在 VPS 上,私钥相当于钥匙,放在本地计算机上,登录的过程就像是用钥匙去开锁,有钥匙的人才能打得开,不仅安全,而且方便。此外,公钥可以复制到其它主机和账户,这就像是你装了很多同样门锁。

    便宜高性价比 VPS 推荐,其中 OneVPS 拥有无限流量,建站、网络加速还是离线下载都非常合适,最低月付仅4美元,使用优惠码ONEVPS可以打9折。

    获取密钥

    就像门锁,先得有,才能装。你可以使用 Xshell 生成密钥,也可以通过其他方式生成密钥,再导入到 Xshell 中进行管理。关于导入和管理的方法可参考《使用 Xshell 管理 SSH 密钥》这篇文章,这里不做赘述。

    在 Xshell 中点开工具菜单,选择用户密钥管理者 ( Alt+T+U )。

    在用户密钥窗口中点击生成按钮。

    在新建用户密钥生成向导中会让你选择密钥类型,一般默认即可,点击下一步。

    然后会要求你填写密钥名称和密码,免密登录密码留空即可,然后点完成。

    之后会有下面这个提示,选择是即可。

    当完成密钥生成的操作后密钥会出现在用户密钥的窗口中。

    配置密钥

    给 VPS 配置密钥简单来说就是把公钥内容写入到 ~/.ssh/authorized_keys 中的过程。

    首先使用 Xshell 登录到 VPS,这里需要注意需要配置密钥的用户,不要弄错。

    执行下面的命令创建 SSH 认证文件并打开文本编辑器。

    mkdir -p ~/.ssh && nano ~/.ssh/authorized_keys

    然后在 Xshell 中点开工具菜单,选择用户密钥管理者 ( Alt+T+U )。

    在用户密钥窗口中双击密钥进入密钥属性。

    在属性窗口中选择公钥标签,复制公钥。

    把复制的公钥粘贴到终端的文本编辑器中,最后保存退出。

    为了能正常登陆,需要给文件设置相应的权限。

    chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

    使用密钥登录 VPS

    这里以新建会话为例子,已有会话可以通过右键属性进入到这个窗口。

    进入用户身份验证设置选项,按照下面的图片操作即可。

    禁用密码登录

    在确认使用密钥能正常登录后,为了提高 VPS 的安全性建议禁用密码登录。

    执行以下命令,对 sshd 配置文件 (/etc/ssh/sshd_config) 进行修改。

    [root@localhost ~]# sed -i 's/PasswordAuthentication no / PasswordAuthentication yes/' /etc/ssh/sshd_config

    最后重启 sshd 服务,使配置生效。

    [root@localhost ~]# /bin/systemctl restart sshd.service

    end

  • 相关阅读:
    C#实现office文档转换为PDF或xps的一些方法
    Asp.Net性能优化.
    我们该如何在网上寻找资源!!!!
    用谷歌浏览器来当手机模拟器
    js 文档高度
    文件的ContentType类型网页设计,HTML/CSS
    javascript 获取滚动条高度+常用js页面宽度与高度[转]
    学习MVC
    windows自带性能监控器
    C#语言规范之小结
  • 原文地址:https://www.cnblogs.com/lindows/p/15699323.html
Copyright © 2020-2023  润新知