Linux系统SSH服务之 sshkey密钥认证实战
时间:2022-07-25
本文章向大家介绍Linux系统SSH服务之 sshkey密钥认证实战,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Linux系统SSH服务之 sshkey密钥认证实战
前面介绍了SSH服务一些特性及其简单配置,在实际的生产环境中,经常会用到sshkey密钥认证实行数据分发数据等操作,还可以批量操作内网服务器,实行免密认证进行推送分发数据
实际生产结构拓扑图如下
整个配置过程
整个配置环境只用一两台服务器
一、实际环境查看
分发服务器
[root@Centos ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@localhost ~]# uname -r
2.6.32-431.el6.x86_64
节点服务器
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@localhost ~]# uname -r
2.6.32-431.el6.x86_64
二、服务器添加系统账号
分发服务端配置账号与密码
[root@Centos ~]# useradd fenfa
[root@Centos ~]# echo "123456"|passwd --stdin fenfa
Changing password for user fenfa.
passwd: all authentication tokens updated successfully.
节点服务端配置账号与密码
[root@localhost ~]# useradd fenfa
[root@localhost ~]# echo "123456"|passwd --stdin fenfa
Changing password for user fenfa.
passwd: all authentication tokens updated successfully
三、生成密钥对
注意此操作需切换到创建的用户(分发服务器操作)
[root@Centos ~]# su - fenfa
[fenfa@Centos ~]$ whoami
fenfa
[fenfa@Centos ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/fenfa/.ssh/id_dsa):
key存储到这个文件
Created directory '/home/fenfa/.ssh'. 系统自动创建这个目录
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/fenfa/.ssh/id_dsa. 私钥
Your public key has been saved in /home/fenfa/.ssh/id_dsa.pub.公钥
The key fingerprint is:
07:06:7a:22:ec:11:72:ae:06:36:de:1c:17:15:90:50 fenfa@Centos
The key's randomart image is:
+--[ DSA 1024]----+
|. o.oE=o. |
| = . o.. |
|.o=.o.. o |
|+o+ooo . . |
|.o.o S . |
|. . |
| |
| |
| |
+-----------------+
[fenfa@Centos ~]$ cd /home/fenfa/.ssh
[fenfa@Centos ~]$ ls -ld .ssh
drwx------. 2 fenfa fenfa 4096 Aug 27 17:09 .ssh 权限700
[fenfa@Centos .ssh]$ ls -ll
total 8
-rw-------. 1 fenfa fenfa 672 Aug 27 16:47 id_dsa
-rw-r--r--. 1 fenfa fenfa 602 Aug 27 16:47 id_dsa.pub
此处注意两个文件的权限:id_dsa 600 id_dsa.pub 644
[fenfa@Centos ~]$ cat /home/fenfa/.ssh/id_dsa
-----BEGIN DSA PRIVATE KEY-----
MIIBvAIBAAKBgQCtz936+YRJaeXBdaVxAtCXOy7IzpUbKSLLA+IC2bg6xLOGS8U+
5qvI73eQqr2yB0HIowEfVSX51zAZShj3SPe3dO89UjD2R+PHL9ORPx2MNLed9MVS
gVFOd12OmsAJ+CDsoFV8J1iF0rjbfZ1XDwCPtktWfG5xnOwjtKSHt9aNVQIVAJ4j
t8J7fuQq40QH6KQ3iEwrupVHAoGAXO3Gel3jQTjN4HJAoWW1zloHlZiD8IkJ6Uz+
LJl6uKFh2klhT+2G9ndOezQlpcMPh/8EOADPZwo+wFRCcKrXoe9ugl/YKb0ERZrn
7ZwEe/uvg1ciW9bCeigni24PMEtiPCd8vDpaSKCkdp7EEvAX/HjaVkUNdALqMl0j
s93UAlICgYEAhQEfTIzZitAyx72z7Bdwtc3FLiPgIGu2vX2mu0xRz4sMHbBOBRi2
a+LFvrwCSfizXO1HBB+giAH2GUFu4BRfxfwHcBRtGtynjMsNlfvU72JBvVVE8puv
BW4A3+5dSUW1skllBuFzkbLQOnhi7SFboSGIXqRSI3NAfutPJ/5Id8MCFQCNVrXo
HcHsd+7aKJql1oW10MHxBQ==
-----END DSA PRIVATE KEY-----
四、分发密钥(公钥)
分发的命令格式
ssh-copy-id -i 密钥名称 用户@远端主机IP地址-------------用于ssh是默认端口
ssh-copy-id -i 密钥名称 “-p port 用户@远端主机IP地址”--用于ssh非默认端口
[fenfa@Centos ~]$ cd .ssh
[fenfa@Centos .ssh]$ ssh-copy-id -i id_dsa.pub fenfa@192.168.1.3
The authenticity of host '192.168.1.3 (192.168.1.3)' can't be established.
RSA key fingerprint is 86:41:46:5c:d9:e0:98:a5:15:ee:b4:01:a5:37:49:c4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.3' (RSA) to the list of known hosts.
fenfa@192.168.1.3's password:
Now try logging into the machine, with "ssh 'fenfa@192.168.1.3'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
节点服务器测试是否分发成功
[root@localhost ~]# tree /home/fenfa/.ssh/
/home/fenfa/.ssh/
+-- authorized_keys
0 directories, 1 file
分发成功
五、分发数据
手工分发
[fenfa@Centos ~]$ scp -P22 -r -p /tmp/text/ fenfa@192.168.1.3:~
123.txt 100% 0 0.0KB/s 00:00
节点服务器测试
[root@localhost fenfa]# tree /home/fenfa/
/home/fenfa/
+-- text
+-- 123.txt
1 directory, 1 file
脚本分发
可以将命令写进脚本中进行执行
[fenfa@Centos ~]$ vi fenfa.sh
scp -P22 -r -p /tmp/text/ fenfa@192.168.1.3:/tmp/fenfadir/
[fenfa@Centos ~]$ ./fenfa.sh
123.txt 100% 0 0.0KB/s 00:00
[fenfa@localhost fenfadir]$ pwd
/tmp/fenfadir
[fenfa@localhost fenfadir]$ tree
.
+-- text
+-- 123.txt
1 directory, 1 file
分发成功
如果是生产环境中每天都要分发一些数据到节点服务器,可以将此脚本放进定时任务,每天系统自动执行,不过最好定时执行的时间是服务并发量不高的时候,以免影响正常的业务访问
- Hadoop 多表 join:map side join 范例
- 实战 windows7 下 eclipse 远程调试 linux hadoop
- Hive 在多维统计分析中的应用 & 技巧总结
- shell 学习笔记(18)
- Hive 中的复合数据结构简介以及一些函数的用法说明
- BloomFilter 简介及在 Hadoop reduce side join 中的应用
- 关于 hadoop reduce 阶段遍历 Iterable 的 2 个“坑”
- Hadoop Mapper 阶段将数据直接从 HDFS 导入 Hbase
- 译文 | 量化投资教程:投资组合优化与R实践
- 浅谈 java 中构建可执行 jar 包的几种方式
- python 日志模块 logging 详解
- 基于堆实现的优先级队列:PriorityQueue 解决 Top K 问题
- explain 深入剖析 MySQL 索引及其性能优化指南
- 图文并茂详解 SQL JOIN
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ubuntu配置tftp服务的步骤小结
- CentOS7下GitLab跨大版本升级的方法
- 解决Linux system v 共享内存问题
- Linux下core文件的使用方法详解
- 使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法
- linux systemctl命令详解
- CentOS7使用dnf安装mysql的方法
- Linux中crontab定时任务不执行的原因
- Linux系统为什么要吃掉我的“内存”
- 教你如何修改Linux远程登录欢迎提示信息
- 详解linux 定时任务 crontabs 安装及使用方法
- 解决Centos7安装nginx后提示“Welcome to nginx on Fedora!”,conf.d目录下无default.conf文件
- 详解Linux中PostgreSQL和PostGIS的安装和使用
- 检测ip和port是否可连接的方法
- Linux关机时执行指定脚本功能实现