一、储备知识

SSH广泛用于脚本自动化。借助SSH,我们可以在远程主机上执行命令并读取输出。SSH使用用户名和密码进行认证。在SSH命令的执行过程中提示输入密码。但是在自动化脚本中,SSH命令可能在一个循环中执行上百次,每次都得提供密码的话,显然不实际。因此,我们需要将登入过程自动化。SSH就包含了一个内建的特性,可以用SSH密钥实现自动登陆。这则攻略描述了如何创建SSH密钥并协助实现自动登陆。

SSH采用基于公钥和基于私钥的加密技术进行自动化认证。认证密钥包含两部分:一个公钥和一个私钥。我们可以通过“ssh-keygen”命令创建认证密钥。要想实现自动化认证,公钥必须放置在服务器中(将其加入文件~/.ssh/authorized_keys),与公钥对应的私钥应该放入你用来登录的客户机的~/.ssh目录中。另一些与SSH相关的配置信息(例如,authorized_keys文件的路径与名称)可以通过修改文件/etc/ssh/sshd_config进行配置。

设置SSH自动化认证步骤:
                1. 创建SSH密钥,这需要登录到远程主机
                2. 将生成的密钥传输到远程主机,并将其加入文件~/.ssh/authorized_keys中

二、实现方法

1、输入命令创建SSH密钥,并指定加密算法

ssh-keygen -t rsa

这里使用ssh-keygen 命令,-t参数表示接下来跟的是加密类型(type),然后就是加密的算法,可以选择rsa1(老版的rsa),rsa(新版的rsa),dsa,ecdsa,ed25519 等。这里用作证书通常使用rsa算法。

然后会要求你填输出的文件夹,一般默认就摆在/home/user/.ssh/下的id_rsa文件中吧。不过需要注意的是,如果曾经生成过密钥,现在重新生成一个的话,如果不改地址是会将原来的覆盖掉的,这样可能会惹一些麻烦的。。。

接下来你可以另外设置一个密码,这个密码相当于一个独立的连接服务器的密码,而不是服务器用户的密码。你就是相当于用这个密码来替代服务器的用户密码(这个密码的长度要大于四)。当然如果怕麻烦可以直接回车回车,表示不用这个密码。

[gaohui@localhost SHELL]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/gaohui/.ssh/id_rsa):
Created directory '/home/gaohui/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gaohui/.ssh/id_rsa.
Your public key has been saved in /home/gaohui/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DWq2LazFNaYOM6uZgLpnVtgTN7SnE2dLnte5x3qSvNg gaohui@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|      .          |
|     . ..        |
|    . =.=o       |
|   o o+XSo.. .   |
|. . +=o*+.. o    |
|o  .+.B... . +   |
|..+o O .   o= +  |
|o=+.o .   . E*   |
+----[SHA256]-----+

到这一步密码就生成完了,在~/.ssh/下就有了生成的文件了。其中id_rsa.pub是公钥,id_rsa是私钥。

[gaohui@localhost .ssh]$ ls
id_rsa  id_rsa.pub

2、上传公钥到远程服务器

公钥必须添加到想要自动登录的远程服务器的/home/user/.ssh/authorized_key文件中。

scp id_rsa.pub user@remote_host:~/.ssh/authorized_keys

本地服务器操作过程:

[gaohui@localhost .ssh]$ scp id_rsa.pub gaohui@192.168.233.129:~/.ssh/authorized_keys
The authenticity of host '192.168.233.129 (192.168.233.129)' can't be established.
ECDSA key fingerprint is SHA256:UIesd8LMZYkaheXtEdiBXK6HQmCj69ddTEqa8GgNz6g.
ECDSA key fingerprint is MD5:ed:2e:77:93:f4:b8:fe:58:b7:50:96:00:dd:52:ac:a6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.233.129' (ECDSA) to the list of known hosts.
gaohui@192.168.233.129's password:
id_rsa.pub                                                                                                                                                                                                     100%  410     1.0MB/s   00:00

远程服务器检查:

gaohui@gaohui-virtual-machine:~/.ssh$ ls
authorized_keys

三、无密码登录检验

[gaohui@localhost .ssh]$ ssh gaohui@192.168.233.129
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-169-generic x86_64)* Documentation:  https://help.ubuntu.com* Management:     https://landscape.canonical.com* Support:        https://ubuntu.com/advantage15 updates can be applied immediately.
To see these additional updates run: apt list --upgradableNew release '20.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.*** System restart required ***
Last login: Thu Mar  3 16:12:29 2022 from 192.168.233.1

实现SSH的无密码自动登录相关推荐

  1. 转载 :配置ssh密钥认证自动登录

    原文地址 :https://segmentfault.com/a/1190000000481249 在客户端来看,SSH提供两种级别的安全验证.[摘自wikipedia] 第一种级别(基于密码的安全验 ...

  2. 设置SSH免密码自动登录(使用别名)

    每次登录服务器都要写一大串的用户名(username@服务器地址)和登录密码十分的繁琐,所以本文就告诉大家如何通过修改配置文件,达到只需要输入:ssh jack(你起的别名)就可以一键登录到服务器中. ...

  3. linux ssh 脚本 密码,ssh自动登录的4种实现方法

    1. 自动ssh/scp方法 A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A上运 ...

  4. linux sshd自动登录,SSH自动登录的几种方法

    1. 自动ssh/scp方法== A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110; A和B的系统都是Linux 在A ...

  5. Linux中的Shell用SSH自动登录远程服务器后执行命令并自动退出

    目录 [隐藏] 1 SSH命令格式 2 主要参数说明 3 ssh控制远程主机,远程执行命令步骤 4 准备工作 5 基于公私钥认证远程登录可能存在的不足 6 ssh 执行远程命令格式 6.1 打开远程s ...

  6. linux登录ssh怎么保存采集的脚本,ssh自动登录并且su的脚本

    从一台Linux机器上用u1用户自动登录到服务器, 然后su成u2 - 需要安装expect - 脚本如下: #!/usr/bin/expect #auto ssh login set timeout ...

  7. 自动登录ssh不需要输入密码

    博客已经搬家,请访问如下地址:http://www.czhphp.com 自动登录ssh不需要输入密码 环境: linux1        192.168.1.10 linux2        192 ...

  8. Linux用户登录自动拷贝文件,linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录...

    原文出处: http://blog.csdn.net/five3/article/details/8648484 最近需要写一个脚本备份各个服务器上的程序到一个指定服务器上,本来以为查查rsync命令 ...

  9. Linux ssh shell 自动登录,shell脚本实现ssh自动登录功能分享

    文件名:ssh_auto_login #!/usr/bin/expect ## # ssh模拟登陆器 # # @author zhiyuan ## if {$argc<4} { puts &qu ...

最新文章

  1. 学python需要学数据库吗-Python学什么数据库
  2. phpstorm调试php配置,PhpStorm配置Xdebug调试WordPress
  3. 会计记忆总结之八:财务会计报告
  4. 【noi 2.6_9284】盒子与小球之二(DP)
  5. Java接口和Java抽象类有什么不同
  6. java system.setproperties_在JAVA中 System.getProperty 和 System.setProperty 方法.
  7. matlab弗洛伊德算法,MATLAB弗洛伊德算法结果有疑惑,求大神解答
  8. 解决办法:configure: error: C compiler cannot create executables错误
  9. kafka与mysql持久化_漫游Kafka设计篇之数据持久化
  10. Amesim学习——传热基础案例:烧红铁棒在空气中冷却
  11. hadoop组件官方源和国内源
  12. 接线端子冲击和振动测试要求
  13. 信号与系统(3.1)- RLC 串联电路的零输入响应
  14. 【Spring】源码浅析 - ResponseEntity.ok
  15. ribbon实现负载均衡
  16. echarts字符云(词云)
  17. win10设置Ctrl+Shift切换输入法
  18. angularjs与jquery特效slidetoggle结合
  19. mysql中limit用法_MYSQL中LIMIT用法?
  20. 我的博客园博客开通了

热门文章

  1. Error: Run Generate Functional Simulation Netlist
  2. 信息学奥赛的“一二三四”
  3. 26岁亿万富翁创业日记曝光(二)
  4. 关闭 Pycharm 自动更新详细教程
  5. ---排列数字---
  6. 《BIGEMAP地图软件》荣登2017、2018年度论坛《最受欢迎谷歌地图软件》
  7. python过滤unicode控制字符
  8. 在debian系统下安装R以及Rstudio的经历
  9. 企鹅够牛,大事不断:腾讯音乐遭“投资者律师代表团”调查、大数据组件TubeMQ宣布开源、1千万美元领投英国AI企业SenSat...
  10. python整形变量赋初值_为了给整型变量a、b、c赋初值10,下面正确的python语句是...