searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

详解SSH免密登录云服务器步骤与报错指南

2023-06-07 08:46:52
58
0

详解SSH免密登录云服务器步骤与报错指南
在官网购买Linux云服务器后,首先通过以下流程先实现ssh外部登录

  • 绑定eip
  • 配置安全组
  • 放行ssh端口


最后通过文中步骤再实现云服务器ssh免密登录。

一、云服务器背景

主机名   内网ip 外网ip
ECMhost1 192.168.30.55 61.171.xxx.xxx
ECMhost2 192.168.30.51
ECMhost3 192.168.30.172

如表格中所示,ECM云服务器中只有ECMhost1绑定了外网eip,其余云服务器并未购买eip,只能通过内网进行连通。

#修改主机名
ECMhost1:

hostnamectl set-hostname ECMhost1


ECMhost2:

hostnamectl set-hostname ECMhost2


ECMhost3:

hostnamectl set-hostname ECMhost3

#添加hosts内网绑定主机名与ip地址

echo "
> 192.168.30.66 ecmhost1
> 192.168.30.67 ecmhost2
> 192.168.30.68 ecmhost3
> " >> /etc/hosts


分别在三台云服务器的hosts中写入hostname与其对应的内网段的ip地址

二、生成ssh公钥和私钥密钥对
1)检查阶段

   ls -al ~/.ssh/


   或

   ls -al /root/.ssh/


 #分别检查用户目录和root目录下是否已经存在id_rsa、id_rsa.pub密钥对,如果有请核实进行备份后,将其删除
 #若报错显示 无.ssh目录,则手动创建

   mkdir ~/.ssh/


   或

   mkdir /root/.ssh


2)生成密钥对

*ssh-keygen --help
 usage: ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile]
                   [-m format] [-N new_passphrase] [-O option]
                   [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
                   [-w provider] [-Z cipher]
        ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase]
                    [-P old_passphrase] [-Z cipher]
        ssh-keygen -i [-f input_keyfile] [-m key_format]
        ssh-keygen -e [-f input_keyfile] [-m key_format]
        ssh-keygen -y [-f input_keyfile]
        ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]
        ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
        ssh-keygen -B [-f input_keyfile]
        ssh-keygen -D pkcs11
        ssh-keygen -F hostname [-lv] [-f known_hosts_file]
        ssh-keygen -H [-f known_hosts_file]
        ssh-keygen -K [-a rounds] [-w provider]
        ssh-keygen -R hostname [-f known_hosts_file]
        ssh-keygen -r hostname [-g] [-f input_keyfile]
        ssh-keygen -M generate [-O option] output_file
        ssh-keygen -M screen [-f input_file] [-O option] output_file
        ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
                   [-n principals] [-O option] [-V validity_interval]
                   [-z serial_number] file ...
        ssh-keygen -L [-f input_keyfile]
        ssh-keygen -A [-a rounds] [-f prefix_path]
        ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                   file ...
        ssh-keygen -Q [-l] -f krl_file [file ...]
        ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
        ssh-keygen -Y match-principals -I signer_identity -f allowed_signers_file
        ssh-keygen -Y check-novalidate -n namespace -s signature_file
        ssh-keygen -Y sign -f key_file -n namespace file [-O option] ...
        ssh-keygen -Y verify -f allowed_signers_file -I signer_identity
                   -n namespace -s signature_file [-r krl_file] [-O option]

 

  • ssh-keygen -t参数是type的缩写,意为指定密钥加密的类型,可选有-t rsa和-t dsa #ssh-keygen默认加密类型为rsa,即默认命令为ssh-keygen -t rsa可无需再指定加密参数
  • ssh-keygen -f参数是生成密钥的保存路径,即指定密钥存放地址 #默认地址即可
  • ssh-keygen -C参数是生成密钥的注释,可作为多密钥系统中识别与保存的注释
ssh-keygen -t rsa -f /root/.ssh/gitlab-server-192.168.11.100 -C "Gitlab-admin@mycompony.com"


  本文中所展示 ssh-keygen 无需添加参数,直接执行生成密钥即可
3)密钥生成过程

  图所示有三个输入栏分别会要求输入:

    1.Enter file in which to save the key保存密钥的文件(无输入则使用默认地址)
    2.Enter passphrase输入保管密钥的短语(无输入则留空,有输入则每次使用密钥前均需要验证该值)
    3.Enter same passphrase again:重复输入一次保管密钥的短语(再次验证)


  本文中所展示ssh-keygen可直接三次回车使用默认值即可
4)生成结束阶段会在root或用户的/.ssh目录下生成一对公钥和密钥。
  
  图示文件则为再ECMhost1刚刚创建的密钥对文件,同理需要再另外两台主机中进行相同的命令行配置,得到三台ssh公私玥环境准备齐全的云服务器主机
  部分云服务器文件可能与图示不同,以下为.ssh目录下文件的详解

    known_hosts         记录ssh服务访问过的计算机的公钥,即为本机访问其余主机的ssh记录
    id_rsa              ssh-keygen生成的私钥
    id_rsa.pub          ssh-keygen生成的公钥
    authorized_keys     用于存放授权免密登录主机的公钥(第三部分中需要用到)


三、云服务器之间ssh免密互联
#通过第二部分已经得到了三台具有ssh公私玥的云环境,之后需要将ssh公钥文件进行拷贝传输写入至需要免密登陆的主机authorized_keys中,有两种方法,分别介绍
方法1:读取ECMhost1主机中的/root/.ssh/id_rsa.pub文件内容,手动写入目标服务器ECMhost2、ECMhost3的/root/.ssh/authorized_keys文件中
  #步骤
  1.1 cat 读取ECMhost1的 id_rsa.pub公钥文件
      
      公钥文件的格式标注了所属用户root和主机ECMhost1
  1.2 手动追加写入
      #登录ECMhost2主机,手动执行命令
 

  echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiLmaCa0dNB5Bmpj1JxhYW1ZHQ7rL7rGZlZbyygMJZfbFNWUtMpLRIA3oWp7Rp0dx9b3IQEAACX2x0J7D1F1kgunFbid9hZA//9MOnYyWDNVBoNzWKPjCQRxNgWh2gDfHCL9HUk+6r6bJ7j0IAPyL7/SpZcvVkTk8GD4hW/R6Xr2ku/zAUsOw6jrsNdnVmNKaLtvH3qyWl3eV+t6HdM3veA6fRuM+dhaf6tfsZzMOHrx5OGoOi5ssu0BEBgQTNZZUbIlYb0wiRzmb7uRcKyEPrWYqGtZtAzNHH7/f+Pcdm2FtbOcIbcHCgTSFSEKE5hsKD4sG+HZ3VQJp9WjhKtqDuPHUzfZtIfxo0y90dL4tGwBIJqKTxF1/S8zRw2rlHziB2FMgsTv5VagtquliopD38sQTsFSL+QONUyCQKrJ1LUkTnfdyfNhEyj1jUqHWuAwerlRznK2ThuAcHYlHSfDUqeS0+S/yUxJlTrUkp5W7enDVH7TFNWNFHY701sWXUrM0= root@ECMhost1" >> /root/.ssh/authorized_keys


      #登录ECMhost3主机,手动执行命令
   

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiLmaCa0dNB5Bmpj1JxhYW1ZHQ7rL7rGZlZbyygMJZfbFNWUtMpLRIA3oWp7Rp0dx9b3IQEAACX2x0J7D1F1kgunFbid9hZA//9MOnYyWDNVBoNzWKPjCQRxNgWh2gDfHCL9HUk+6r6bJ7j0IAPyL7/SpZcvVkTk8GD4hW/R6Xr2ku/zAUsOw6jrsNdnVmNKaLtvH3qyWl3eV+t6HdM3veA6fRuM+dhaf6tfsZzMOHrx5OGoOi5ssu0BEBgQTNZZUbIlYb0wiRzmb7uRcKyEPrWYqGtZtAzNHH7/f+Pcdm2FtbOcIbcHCgTSFSEKE5hsKD4sG+HZ3VQJp9WjhKtqDuPHUzfZtIfxo0y90dL4tGwBIJqKTxF1/S8zRw2rlHziB2FMgsTv5VagtquliopD38sQTsFSL+QONUyCQKrJ1LUkTnfdyfNhEyj1jUqHWuAwerlRznK2ThuAcHYlHSfDUqeS0+S/yUxJlTrUkp5W7enDVH7TFNWNFHY701sWXUrM0= root@ECMhost1" >> /root/.ssh/authorized_keys


  1.3 验证ssh登录

      ssh root@ECMhost2 -p 22
      ssh root@ECMhost3 -p 22

  1.4 报错解疑

      #被远端关闭连接
      ssh ssh_exchange_identification: read: Connection reset by peer
      解决方案:在目标服务器的/etc/hosts.allow文件中追加ECMhost1的ip地址
      echo "sshd: 192.168.30.55" >> /etc/hosts.allow
      #权限拒绝
      ssh : Permission denied (publickey,gssapi-with-mic)
      解决方案:编辑/etc/ssh/sshd_config文件
      sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
      systemctl restart sshd

方法2:利用原生ssh-copy-id命令拷贝至指定云服务器中
  2.1 分别将ECMhost1主机的公钥拷贝至另外两台主机

      ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.30.51
      ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.30.172

  2.2 验证登录

      ssh -p 22 root@192.168.30.51
      ssh -p 22 root@192.168.30.172


   3. 以上步骤已经成功将ECMhost1实现免密ssh登录ECMhost2、ECMhost3云服务器,ECMhost2与ECMhost3之间的互相连通同样可以参考以上步骤

0条评论
0 / 1000
S4nM1
3文章数
0粉丝数
S4nM1
3 文章 | 0 粉丝
原创

详解SSH免密登录云服务器步骤与报错指南

2023-06-07 08:46:52
58
0

详解SSH免密登录云服务器步骤与报错指南
在官网购买Linux云服务器后,首先通过以下流程先实现ssh外部登录

  • 绑定eip
  • 配置安全组
  • 放行ssh端口


最后通过文中步骤再实现云服务器ssh免密登录。

一、云服务器背景

主机名   内网ip 外网ip
ECMhost1 192.168.30.55 61.171.xxx.xxx
ECMhost2 192.168.30.51
ECMhost3 192.168.30.172

如表格中所示,ECM云服务器中只有ECMhost1绑定了外网eip,其余云服务器并未购买eip,只能通过内网进行连通。

#修改主机名
ECMhost1:

hostnamectl set-hostname ECMhost1


ECMhost2:

hostnamectl set-hostname ECMhost2


ECMhost3:

hostnamectl set-hostname ECMhost3

#添加hosts内网绑定主机名与ip地址

echo "
> 192.168.30.66 ecmhost1
> 192.168.30.67 ecmhost2
> 192.168.30.68 ecmhost3
> " >> /etc/hosts


分别在三台云服务器的hosts中写入hostname与其对应的内网段的ip地址

二、生成ssh公钥和私钥密钥对
1)检查阶段

   ls -al ~/.ssh/


   或

   ls -al /root/.ssh/


 #分别检查用户目录和root目录下是否已经存在id_rsa、id_rsa.pub密钥对,如果有请核实进行备份后,将其删除
 #若报错显示 无.ssh目录,则手动创建

   mkdir ~/.ssh/


   或

   mkdir /root/.ssh


2)生成密钥对

*ssh-keygen --help
 usage: ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile]
                   [-m format] [-N new_passphrase] [-O option]
                   [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
                   [-w provider] [-Z cipher]
        ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase]
                    [-P old_passphrase] [-Z cipher]
        ssh-keygen -i [-f input_keyfile] [-m key_format]
        ssh-keygen -e [-f input_keyfile] [-m key_format]
        ssh-keygen -y [-f input_keyfile]
        ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]
        ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
        ssh-keygen -B [-f input_keyfile]
        ssh-keygen -D pkcs11
        ssh-keygen -F hostname [-lv] [-f known_hosts_file]
        ssh-keygen -H [-f known_hosts_file]
        ssh-keygen -K [-a rounds] [-w provider]
        ssh-keygen -R hostname [-f known_hosts_file]
        ssh-keygen -r hostname [-g] [-f input_keyfile]
        ssh-keygen -M generate [-O option] output_file
        ssh-keygen -M screen [-f input_file] [-O option] output_file
        ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
                   [-n principals] [-O option] [-V validity_interval]
                   [-z serial_number] file ...
        ssh-keygen -L [-f input_keyfile]
        ssh-keygen -A [-a rounds] [-f prefix_path]
        ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
                   file ...
        ssh-keygen -Q [-l] -f krl_file [file ...]
        ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
        ssh-keygen -Y match-principals -I signer_identity -f allowed_signers_file
        ssh-keygen -Y check-novalidate -n namespace -s signature_file
        ssh-keygen -Y sign -f key_file -n namespace file [-O option] ...
        ssh-keygen -Y verify -f allowed_signers_file -I signer_identity
                   -n namespace -s signature_file [-r krl_file] [-O option]

 

  • ssh-keygen -t参数是type的缩写,意为指定密钥加密的类型,可选有-t rsa和-t dsa #ssh-keygen默认加密类型为rsa,即默认命令为ssh-keygen -t rsa可无需再指定加密参数
  • ssh-keygen -f参数是生成密钥的保存路径,即指定密钥存放地址 #默认地址即可
  • ssh-keygen -C参数是生成密钥的注释,可作为多密钥系统中识别与保存的注释
ssh-keygen -t rsa -f /root/.ssh/gitlab-server-192.168.11.100 -C "Gitlab-admin@mycompony.com"


  本文中所展示 ssh-keygen 无需添加参数,直接执行生成密钥即可
3)密钥生成过程

  图所示有三个输入栏分别会要求输入:

    1.Enter file in which to save the key保存密钥的文件(无输入则使用默认地址)
    2.Enter passphrase输入保管密钥的短语(无输入则留空,有输入则每次使用密钥前均需要验证该值)
    3.Enter same passphrase again:重复输入一次保管密钥的短语(再次验证)


  本文中所展示ssh-keygen可直接三次回车使用默认值即可
4)生成结束阶段会在root或用户的/.ssh目录下生成一对公钥和密钥。
  
  图示文件则为再ECMhost1刚刚创建的密钥对文件,同理需要再另外两台主机中进行相同的命令行配置,得到三台ssh公私玥环境准备齐全的云服务器主机
  部分云服务器文件可能与图示不同,以下为.ssh目录下文件的详解

    known_hosts         记录ssh服务访问过的计算机的公钥,即为本机访问其余主机的ssh记录
    id_rsa              ssh-keygen生成的私钥
    id_rsa.pub          ssh-keygen生成的公钥
    authorized_keys     用于存放授权免密登录主机的公钥(第三部分中需要用到)


三、云服务器之间ssh免密互联
#通过第二部分已经得到了三台具有ssh公私玥的云环境,之后需要将ssh公钥文件进行拷贝传输写入至需要免密登陆的主机authorized_keys中,有两种方法,分别介绍
方法1:读取ECMhost1主机中的/root/.ssh/id_rsa.pub文件内容,手动写入目标服务器ECMhost2、ECMhost3的/root/.ssh/authorized_keys文件中
  #步骤
  1.1 cat 读取ECMhost1的 id_rsa.pub公钥文件
      
      公钥文件的格式标注了所属用户root和主机ECMhost1
  1.2 手动追加写入
      #登录ECMhost2主机,手动执行命令
 

  echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiLmaCa0dNB5Bmpj1JxhYW1ZHQ7rL7rGZlZbyygMJZfbFNWUtMpLRIA3oWp7Rp0dx9b3IQEAACX2x0J7D1F1kgunFbid9hZA//9MOnYyWDNVBoNzWKPjCQRxNgWh2gDfHCL9HUk+6r6bJ7j0IAPyL7/SpZcvVkTk8GD4hW/R6Xr2ku/zAUsOw6jrsNdnVmNKaLtvH3qyWl3eV+t6HdM3veA6fRuM+dhaf6tfsZzMOHrx5OGoOi5ssu0BEBgQTNZZUbIlYb0wiRzmb7uRcKyEPrWYqGtZtAzNHH7/f+Pcdm2FtbOcIbcHCgTSFSEKE5hsKD4sG+HZ3VQJp9WjhKtqDuPHUzfZtIfxo0y90dL4tGwBIJqKTxF1/S8zRw2rlHziB2FMgsTv5VagtquliopD38sQTsFSL+QONUyCQKrJ1LUkTnfdyfNhEyj1jUqHWuAwerlRznK2ThuAcHYlHSfDUqeS0+S/yUxJlTrUkp5W7enDVH7TFNWNFHY701sWXUrM0= root@ECMhost1" >> /root/.ssh/authorized_keys


      #登录ECMhost3主机,手动执行命令
   

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiLmaCa0dNB5Bmpj1JxhYW1ZHQ7rL7rGZlZbyygMJZfbFNWUtMpLRIA3oWp7Rp0dx9b3IQEAACX2x0J7D1F1kgunFbid9hZA//9MOnYyWDNVBoNzWKPjCQRxNgWh2gDfHCL9HUk+6r6bJ7j0IAPyL7/SpZcvVkTk8GD4hW/R6Xr2ku/zAUsOw6jrsNdnVmNKaLtvH3qyWl3eV+t6HdM3veA6fRuM+dhaf6tfsZzMOHrx5OGoOi5ssu0BEBgQTNZZUbIlYb0wiRzmb7uRcKyEPrWYqGtZtAzNHH7/f+Pcdm2FtbOcIbcHCgTSFSEKE5hsKD4sG+HZ3VQJp9WjhKtqDuPHUzfZtIfxo0y90dL4tGwBIJqKTxF1/S8zRw2rlHziB2FMgsTv5VagtquliopD38sQTsFSL+QONUyCQKrJ1LUkTnfdyfNhEyj1jUqHWuAwerlRznK2ThuAcHYlHSfDUqeS0+S/yUxJlTrUkp5W7enDVH7TFNWNFHY701sWXUrM0= root@ECMhost1" >> /root/.ssh/authorized_keys


  1.3 验证ssh登录

      ssh root@ECMhost2 -p 22
      ssh root@ECMhost3 -p 22

  1.4 报错解疑

      #被远端关闭连接
      ssh ssh_exchange_identification: read: Connection reset by peer
      解决方案:在目标服务器的/etc/hosts.allow文件中追加ECMhost1的ip地址
      echo "sshd: 192.168.30.55" >> /etc/hosts.allow
      #权限拒绝
      ssh : Permission denied (publickey,gssapi-with-mic)
      解决方案:编辑/etc/ssh/sshd_config文件
      sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
      systemctl restart sshd

方法2:利用原生ssh-copy-id命令拷贝至指定云服务器中
  2.1 分别将ECMhost1主机的公钥拷贝至另外两台主机

      ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.30.51
      ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.30.172

  2.2 验证登录

      ssh -p 22 root@192.168.30.51
      ssh -p 22 root@192.168.30.172


   3. 以上步骤已经成功将ECMhost1实现免密ssh登录ECMhost2、ECMhost3云服务器,ECMhost2与ECMhost3之间的互相连通同样可以参考以上步骤

文章来自个人专栏
云服务器相关
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
1