证书登录:

这里说的证书其实就是密钥. 在非对称加密中, 密钥分为公钥和私钥. 私钥, 即密钥所有人持有. 公钥则公布给他人. 公钥和私钥成对使用, 互相解密. 公钥加密数据只能用私钥解密; 私钥加密则只能用公钥解密(验证)

证书登录原理:

密钥对生成后, 公钥存储于远程服务器. 登录时远程服务器向客户端发送随机字符串, 客户端以私钥加密后返回服务器, 服务器再以公钥解密. 解密成功则证明客户端合法, 允许登录,生成的密钥仅对当前用户有效.

SSH免密码原理

1、client向Server 发出连接请求,

2、Server 端向client发出自己的公钥

3、client使用Server端的公钥加密通讯密钥然后发给Serve端

4、如果通讯过程被截获,由于窃听者即使获知公钥和经过公钥加密的内容,但不拥有私钥依然无法解密(RSA算法)

5、 Server端接收到密文后,用私钥解密,获知通讯密钥

/root/.ssh目录存放文件清单:

authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
如果希望ssh公钥生效需满足至少下面两个条件:
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600

1.创建公钥私钥:

ssh-keygen -t rsa

ssh-keygen是一个用来生成和管理ssh密钥的工具

-t参数用于指定密钥类型, 或者说加密算法. 本次使用rsa算法. 除此以外还有rsa1, dsa可选

2、将本地公钥写入authorized_keys. 目录下多出一个文件authorized_keys

3、将其他机器的公钥拷贝到服务器authorized_keys文件中:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.4

.常用以下几种方法:
通过ssh-copy-id的方式

1、ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.1.4

2、scp -p ~/.ssh/id_rsa.pub 10.0.1.4:/root/.ssh/authorized_keys

然后运行以下命令来将公钥导入到~/.ssh/authorized_keys这个文件中 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

设置禁用密码登录

sudo vim /etc/ssh/sshd_config

# 禁止密码登录。原先为PasswordAuthentication yes
PasswordAuthentication no # 禁止 root 登录,看情况是否需要。原先为PermitRootLogin yes
PermitRootLogin no

service restart sshd.service 

证书登陆:

如果使用证书登陆需要下载私钥

home/.ssh下私钥id_rsa下载到本地

sftp 常用命令:

    1. sftp user@ip
      在 Linux 的 shell 中执行上面的命令后,Linux shell 会提示用户输入密码, 输入 password 之后就成功建立了 sftp 连接。
    2. help
      建立连接后, Linux shell 中的 $ 变成 sftp>。 执行 help, 可以看 sftp 支持哪些命令。
    3. pwd 和 lpwd
      pwd 是看远端服务器的目录, 即 sftp 服务器默认的当前目录。
      lpwd 是看 linux 本地目录。
    4. ls 和 lls
      ls 是看 sftp 服务器下当前目录下的内容
      lls 是看 linux 当前目录下的内容。
    5. put a.txt
      这个是把 linux 当前目录下的 a.txt 文件上传到 sftp 服务器的当前目录下。
    6. get b.txt
      这个是把 sftp 服务器当前目录下的 b.txt 文件下载到 linux 当前目录下。
      $ get openssl-1.1.1i.tar.gz ~/
    7. !command
      这个是指在 linux 上执行 command 这个命令, 比如!ls 是列举 linux 当前目录下的内容, !rm a.txt 是删除 linux 当前目录下的 a.txt 文件。 这个命令非常有用, 因为在 sftp> 后输入命令, 默认只针对 sftp 服务器的, 所以执行 rm a.txt 删除的是 sftp 服务器上的 a.txt 文件, 而非本地的 linux 上的 a.txt 文件。
    8. exit 和 quit
      退出。

SSH 设置别名访问远程服务器

使用 cd ~/.ssh/ 进入 ssh 目录,会看到有 config、known_hosts 两个文件,一般没有设置的话,只会有 known_hosts,可以使用 touch config 命令创建 config 文件。
使用 vim 编辑 config 文件,添加如下内容(或直接只用 cat >> 添加内容):
cat >>~/.ssh/config<<EOF
Host xxx1
HostName 192.168.100.101
User root
IdentitiesOnly yes

Host xxx2
HostName 192.168.100.102
User root
IdentitiesOnly yes

Host xxx5
HostName 192.168.100.103
User root
IdentitiesOnly yes
EOF

其中:

    1. Host 后边的是名称,以后可以根据这个名称进行访问;
    2. HostName 是你的主机 IP 地址;
    3. User 为主机登录的用户名;
    4. IdentitiesOnly yes 固有配置;

Centos免密登陆的更多相关文章

  1. [提供可行性脚本] RHEL/CentOS 7 多节点SSH免密登陆

    实验说明: 在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少: 在机器数目很多的时候,使用更过的往往是Ansible分发并 ...

  2. centos实现免密登陆及远程操作

    ----------------------------**********------------------------------------------------- 免密码登陆 第一步: 执 ...

  3. ssh免密登陆及时间设置

    1.ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa // 在自己主机生成私钥和公钥 2.scp id_rsa.pub centos@s201:/home/centos ...

  4. CentOS7 开启免密登陆

    1.开启免密登陆功能 以下文件 /etc/ssh/sshd_config 取消以下两项注释,如果没有添加. RSAAuthentication yes PubkeyAuthentication yes ...

  5. xshell 远程登陆CentOS7 免密登陆

    首先说一下大体的思路: 1. 以密码登陆CentOS系统 2. 配置ssh 3. xshell 生成秘钥 4. 进行免密登陆 软件.设备: xshell(下载地址(免费版),也可以自行百度下载) Ce ...

  6. SSH实现免密登陆

    SSH实现免密登陆配置 ssh实现免密码登录的配置过程,主要分为以下几个步骤: serverA生成密钥,包括私钥和公钥 serverA将公钥传到serverB上 serverA上配置serverB登陆 ...

  7. macos ssh host配置及免密登陆

    windows下面有xshell 这样的可视化ssh管理工具 macos 下面使用终端做下简单配置,也非常方便,具体过程如下 生成秘钥 cd ~/.sshssh-keygen -t rsa 生成了私钥 ...

  8. SSH之免密登陆

    又来了,上头让小轩我在服务器中写一个Shell脚本,主要用来在机器B中定时备份机器A中的一些文件.那么,小轩是怎么想的呢? 在小轩的知识库里,现在有scp和ssh两个玩具.别的还真没有其他什么东西了. ...

  9. ssh的免密登陆

    想必大家都有使用ssh登陆的过程了,那么,怎么设置ssh免密登陆呢?下面有一些我的总结: 环境:服务器主.从 主服务器:192.168.1.1 从服务器:192.168.1.2 实现主服务器ssh登录 ...

随机推荐

  1. java中到底什么是继承?

    1.何为继承?What is Inheritance? 在上图中,对于车来讲,汽车就是子类.对于汽车来讲,奔驰就是子类.车是汽车的基类,超类,或说父类.到底什么是继承?马克-to-win,子类把父类的 ...

  2. Mysql 8 使用过程中的命令记录

    Mysql 8 使用过程中的命令记录 注: 当前 MySQL 数据库的版本 8.0.27 修改密码 1. 使用其他用户修改root 密码 ALTER USER 'root'@'localhost' I ...

  3. Postman大势已去

    作为一名前端,日常开发过程中除了写业务代码,前后端联调更是重要的一环.但这一环却往往是整个开发中最繁琐也最累人的一环.任谁都想早点下班,然而提升联调效率并不是个纯技术相关的问题,而是需要有良好工作流程 ...

  4. 计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统

    系列的上一篇计算机系统4-> 计组与体系结构1 | 基础概念与系统评估,学习了一些计算机的基础概念,将一些基本的计算机组成部分的功能和相互联系了解了一下,其中很重要的一个抽象思想就是软硬件的接口 ...

  5. java的Integer中也会有缓存

    在上篇<java的自动拆箱会发生NPE>博客中接收了java中的Integer中的自动拆箱产生的NPE,其实对于所有的包装类来说都是一样的,都会产生这样的问题,大家需要举一反三,做学问学知 ...

  6. Dom基础(三):事件冒泡,事件委托(事件代理)和事件捕获

    javascript中的addEventListener(事件名,回调,布尔) 其中第三个参数默认为false-事件冒泡,true为事件捕获 二者区别: 事件冒泡:目标元素事件先触发,然后父元素事件触 ...

  7. go学习第一课--语法基础

    一.hello world 新建文件helloworld.go package main import "fmt" func main() { fmt.Println(      ...

  8. Antd Modal 可拖拽移动

    一 目标: 实现antd Modal 弹窗或者其他弹窗的点击标题进行拖拽的效果 二 准备及思录: 1.使用antd  Modal 组件,要想改变位置需要改变Modal style 的left 和top ...

  9. Go学习-基本语法(一)

    前言 一直对Service Mesh相关内容比较感兴趣,后面一路学习了Dcoker.Kubernetes等相关内容,可以说是对基本概念和使用有一定了解,随着开始学习一些相关的组件的时候,发现基本上全部 ...

  10. 如何用C/C++实现去除字符串头和尾指定的字符

    编程时我们经常需要对字符串进行操作,其中有一项操作就是去除字符串的头(尾)指定的字符,比如空格.通常我们会使用封装好的库函数或者类函数的Trim方法来实现,如果自己动手写一个TrimHead和Trim ...