ssh免密钥之上厕所
ssh服务简单介绍
SSH协议框架中最主要的部分是三个协议:
*传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性等的支持;
*用户认证协议(The User Authentication Protocol)则为服务器提供客户端的身份鉴别;
*连接协议(The Connection Protocol)将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用;各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。
同时SSH协议框架中还为许多高层的网络安全应用协议提供扩展的支持。它们之间的层次关系可以用如下图来表示:
一,ssh建立链接过程
1.服务器上产生公钥
2.客户端带着私钥访问服务器
3.服务器上公钥返回给客户端,并且用自己的公钥和客户端发来的私钥生成key pair
4.客户端再次带着自己的私钥和服务器发来的公钥生成key pair访问服务器
5.服务器用自己的key pair和客户端的key pair进行比对,建立链接
注意:
在第一次链接的时候,会在本地生成密钥文件/.ssh/known_hosts(可以存放多个)
二,ssh生成密钥对过程
1.客户端 ssh-keygen -t dsa
生成2个文件,id_dsa(私钥),id_dsa_pub(公钥)
2.客户端 发送公钥到服务器端
3.客户端 带着公钥发送链接请求
4.验证公钥
5.服务器 用公钥加密质询,发送至客户端
6.客户端 用私钥解密质询
7.客户端 将解密后的质询发送回服务器
8.服务器 验证质询
9.验证通过,链接建立
三,sshd_config配置文件可修改地方
1.#Port 22
2.PermitRootLogin yes 默认是打开的,就是允许客户端用root链接
3.#PermitEmptyPasswords no 是否允许空密码
下面是可以解决链接慢
1.UseDNS no 拒绝域名解析
2.GSSAPICleanupCredentials no
四,客户端链接ssh基本语法
1.指定端口的链接,会跳到链接的机子上
ssh -p22 user@ip -p指定端口,默认即位22
2.在链接的机子上执行命令,不会跳到链接的机子上
ssh -p22 user@ip command
五,基于ssh加密的scp命令
1.推:scp -P22 /etc/file user@ip:/tmp -P这个指定端口是大写p
2.拉:scp -P22 user@ip:/tmp/file /etc/
3.参数介绍:
-r递归,表示拷贝目录
-p表示拷贝前后保持文件目录属性
-l limit限制速度
通常scp -P22 -rp 即可
4.scp每次都是全量的拷贝,不同于rsync的增量
六,基于ssh加密的sftp远程上传下载(不推荐用,因为可以使用命令)
1.sftp -oPort=22 user@ip oPort指定端口
2.上传本地文件到远程主机
当我们链接上的时候,可以通过ls查看当前目录文件
通过,put /etc/file /tmp 将本地的file上传到远程主机的/tmp目录
默认如果不加/tmp,发送到/root目录下
3.下载远程主机文件到本地
通过,get /etc/file /tmp 将远程主机上的file文件下载到/tmp下
默认如果不加/tmp,下载到我们开始执行链接命令的目录下
七,非交互式创建密钥
我们手动创建是通过,ssh-keygen -t dsa,然后回车
1.自动创建
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1
2.将公钥发送到远程主机
ssh-copy-id -i .ssh/id_dsa.pub "-p22 user@ip"
发送过去后,远程主机会产生.ssh/authorized_keys文件,权限是600,本地会多出.ssh/known_hosts文件
八,提权执行
1.直接root账号,将sshd_config里面允许root登录
2.sudo提权实现没有权限的用户拷贝
首先,配置sudoers:
终端命令;visudo,相当于配置/etc/sudoers
## Allow root to run any commands anywhere
用户或者组 机器=授权角色 可执行命令
root ALL=(ALL) ALL
joker ALL=(ALL) /usr/bin/rsync
@group ALL=(ALL) ALL
user ALL=(ALL) NOPASSWD:ALL
解释:
第一个ALL代表机器,就是所有机器,第二个ALL代表所有角色,第三个ALL代表可以执行所有命令,NOPASSWD代表提权命令时不需要提示密码
然后,加载sudoers文件
visudo -C
最后,用joker用户通过基于ssh的rsync发送文件
用户或者组在执行授权的特殊权限命令时后格式为sudo 命令,切换到root格式为 sudo su - ,需要输入当前用户的密码,而不是root密码
ssh -p22 -t user@ip sudo rsync ~/hosts /etc/hosts
注意;
如果,提示命令找不到,很可能是环境变量导致
root下,echo $path
user下,echo $path
在user下,修改vi ~/.bash_profile,将/usr/local/sbin:/sbin:/usr/sbin加入进去
3.利用suid实现没有权限用户拷贝(了解即可)
chmod u+s 'which rsync'
附赠基于ssh的scp推送脚本
#!/bin/bash
if [ $# -ne 2 ];then
echo "usage:/bin/bash $0 {avg1 avg2}"
exit 1
fi
. /etc/init.d/functions
for ip in 1 2 3
do
scp -p22 file user@ip:/tmp > /dev/null 2&1
if [ $? -eq 0 ];then
action "fenfa hosts ip" /bin/true
else
action "fenfa hosts ip" /bin/false
fi
done
九,非交互模式产生密钥
1.yum install expect -y
2.mkpasswd -l 10
参数介绍,生成随机字符串,-l是指生成多少个字符
3.简单介绍expect的过程
首先,还是需要手动ssh-keygen生成私钥,公钥
然后,spawn ssh-copy-id -i id_dsa.pub "-p 22 user@ip"
expect {
"yes/no" {send "yes\r":exp_continue}
"*password" {send "123\r"}
}
expect eof
附赠基于expect免密钥分发脚本
#!/bin/bash
# The author is joker, which is used to manage the host.
expect_order=`which expect 1>/dev/null 2>&1`
if [ $? -eq 1 ];then
yum install expect -y
sleep 1
sh $0
else
Distribute(){
for IP in $(cat /service/script/distribute_ip.txt);do
Passwd=$1
USER=$2
expect -c "
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 $USER@$IP
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"$Passwd\r\";exp_continue}
\"*password*\" {send \"$Passwd\r\";}
}
"
if [ $? -eq 0 ];then
echo -e "\033[32m 绿色字,ssh $IP 链接成功 \033[0m"
else
echo -e "\033[31m 红色字,ssh $IP 链接失败,请检查原因 \033[0m"
fi
done
}
Distribute "Poppy1115" root
fi
###########################################
# distribute_ip.txt,注意该文件适合在同一个地区使用,内网互动,否则去除内网地址
# 外网地址 内网地址
ssh免密钥之上厕所的更多相关文章
- linux系统ssh免密钥登录配置
linux主机配置ssh免密钥登录,具体配置如下: 1.执行命令ssh-keygen -t rsa,生成公钥和私钥(具体步骤详见下图) 2.会在当前用户的家目录的.ssh/生成公钥和私钥, 3.执行s ...
- gitlab用户添加ssh免密钥认证后clone还是要求输入密码
今天在centos 7公网服务器上安装gitlab在配置ssh免密钥时遇到一个奇怪的事,正确添加了本机的公钥到gitlab账户上,进行clone时死活都要你输入密码gitlab使用yum安装的,之前在 ...
- 【大数据】设置SSH免密钥(转)
设置SSH免密钥 关于ssh免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码. 这项操作可以在admin用户下执行,执行完毕公钥在/home/admin/.ssh ...
- ssh免密钥登陆的两种方式
ssh 免密钥登陆的两种方式第一种:直接使用命令复制过去ssh-copy-id root@192.168.3.113批量复制for i in {113..140}; do ssh-copy-id ro ...
- Linux机器之间SSH免密钥登录设置
SSH免密钥登录 私钥:密钥留在本机 公钥:密钥发给其他机 hadoop01 生成密钥: ssh-keygen -t rsa (密钥存放路径:/root/.ssh) id_rsa:私钥 id_rsa. ...
- [CentOS] SSH 免密钥登录
一.环境说明: 操作系统:CentOS-7-x86_64-Minimal-1611 虚拟机:VMware® Workstation 12 Pro:12.5.5 build-5234757 服务器:no ...
- 014-配置SSH免密钥登录
问题:client端需要免密钥登录服务器server如何配置?1.前提:客户端已安装openssh-client;服务端已安装openssh-server;服务器端22号端口已经打开2.需要密钥登录时 ...
- ssh免密钥登录一例问题
今天遇到一个奇怪的问题,在同一机器上创建的普通用户使用 ssh-copy-id -i .ssh/id_rsa.pub root@192.168.3.254 建立与root用户的免密钥通信,结果死活还是 ...
- SSH免密钥互信及企业案例
SSH远程免密码: 原理简述:客户端 创建公钥和私钥,公钥是锁,私钥是自己留在客户端的钥匙. 客户端将公钥(锁)发出到服务端,以后自己就能用客户端本地的私钥进行登陆,不用输入密码! 1.客户端,和服 ...
随机推荐
- linux如何让一个程序崩溃后自动重启
思路: 写一个脚本 监控程序的运行状态 没有运行启动运行 已运行不做操作. 如果在控制台启动脚本 注意必须 nohup sh xxx.sh & while true do ps -ef ...
- keepalived高可用集群。
keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keepalived三大功能1实现物理高可用, ...
- 四:(之八_Linux压力测试工具stress)Dockerfile语法梳理和实践
8.1 安装stress stress目前是在该目录下的可执行文件 --vm 创建几个进程 --vm-bytes 为每个进程分配多少内存 8.2 debug输出stress创建进程的过程 一直在创建有 ...
- Python之路,Day9 - 异步IO\数据库\队列\缓存
https://www.cnblogs.com/alex3714/articles/5248247.html http://www.cnblogs.com/wupeiqi/articles/51327 ...
- jq demo 九宫格抽奖
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- python笔记14-三元运算符
a = 1b = 2#下面这个c = a if a>1 else b #和下面是一样的效果if a > 1: c = aelse: c = b #打印偶数s=[]nums = list(r ...
- python变量进阶(可变不可变,局部变量和全局变量)
变量进阶(理解) 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引 ...
- 使用GraphHttpClient调用Microsoft Graph接口 - GET
博客地址:http://blog.csdn.net/FoxDave 使用GraphHttpClient类调用Microsoft Graph REST API,你可以使用GET,POST和PATCH请求 ...
- kafka 分区和副本以及kafaka 执行流程,以及消息的高可用
1.Kafka概览 Apache下的项目Kafka(卡夫卡)是一个分布式流处理平台,它的流行是因为卡夫卡系统的设计和操作简单,能充分利用磁盘的顺序读写特性.kafka每秒钟能有百万条消息的吞吐量,因此 ...
- .net ORM框架(Dapper简单应用)
1.引入 Dapper.dll类库 2.创建书籍模型book using System; using System.Collections.Generic; using System.Linq; us ...