openssh

openssh

就是SSHD服务

实现加密的远程连接/传输数据.

openssh-server 服务端 (sshd,/etc/ssh/sshd_config)

openssh-clients客户端命令 scp,ssh

=======================================================================

ssh,常用来远程连接,数据是加密的;

同时还有telnet也可以远程,但数据未加密,在升级openssh服务的时候,启动telnet服务备用即可;

----------------------------------------------------------------------

安装服务

yum install -y telnet-server

# 启动

# systemctl disable  telnet.socket

systemctl start telnet.socket

# 本地shell中连接

telnet 10.0.0.61

=======================================================================

Openssh-server配置文件:/etc/ssh/sshd_config

连接加速选项:

UseDNS no:是否开启反向解析:ip-->域名或主机名;

GSSAPIAuthentication no:GSS认证功能关闭;

安全优化选项:

Port 默认是Port 22 端口范围1-65535 推荐1w以上的端口

PermitRootLogin 禁用root用户 远程 登录权限. 默认是yes(可以让root远程登录) (ubt系统中默认是no) 使用建议:先添加普通用户配置sudo权限,然后再禁用.

ListenAddress 监听的地址(后面需要指定本地网卡的ip地址) 可以控制用户只能通过内网访问,应用建议:一般配合着堡垒机,vpn。

----------------------------------------------------------------------

ListenAddress 0.0.0.0:52113 #表示ssh都可以使用52113 无论局域网还是公网

ListenAddress 172.16.1.61:22 #表示ssh只有在172.16.1.61 局域网可以使用22端口

----------------------------------------------------------------------

ssh root@172.16.1.61

ssh -p 52113 root@10.0.0.61

=======================================================================

Openssh-Clients客户端命令

scp 远程传输文件

ssh 远程连接

sftp 远程传输文件(一般开发通过图形化界面使用ftp工具)

----------------------------------------------------------------------

scp 文件/目录  用户名@ip:路径

-r 递归传输,传输目录

-p 保持属性信息不变

-P(大写) 指定端口号

scp -rp -P 22  /etc/hostname  root@10.0.0.41:/tmp/

----------------------------------------------------------------------

ssh

功能:

1. 远程连接.

2. 远程连接并执行命令或脚本.(不要执行交互式命令)

案例一:

ssh -p 22 root@10.0.0.41

案例02: 使用root用户远程连接到10.0.0.41的22端口并执行whoami命令或ip a 命令

ssh -p 22 root@10.0.0.41 whoami

案例03: 远程连接10.0.0.31节点并执行多条命令:whoami , pwd, hostname命令

ssh -p22 nfs01 "whoami ՎҐ pwd ՎҐ hostname -I "

ssh -p22 nfs01 "whoami ; pwd ; hostname -I  "

注:&& 并且,命令行中表示前一个命令执行成功再执行后面的命令.

; 分号,分隔命令.相当于是1行的结束.

----------------------------------------------------------------------

sftp

ftp文件传输协议,服务和客户端,服务端端口是21和20.

openssh (sshd)也提供了,ftp功能,sftp,端口是22.

ftp客户端:常用sftp命令,软件xftp,winscp....

注:如果上传大文件建议使用ftp或scp

=======================================================================

SSH的免密登录:

理论基础:

在一些使用场景,比如,用脚本向不同主机发送文件等,需要ssh功能,但ssh登录默认是一种交互式的使用,这就给批量任务带来了阻碍;

使用免密登录,就能解决这种需求场景,这种方式是基于密钥的认证登录,双机互信,具体介绍如下:

首先,假定一个server,是被管理对象,一个管理者,这二者需要密免通信;

在管理端,能过命令生成密钥对,其中一个是私钥,一个是公钥,要通过网络将公钥传输给server(被管理者);

传输过程可以简单理解为:管理端发送指令到server,server将回应消息通过公钥加密,回传给管理端,管理端通过私钥处理后的消息再回传给server,server认证通过这些消息,双方便基于这次公私钥的传输而互信了,可以免密登录并传输数据了。

私钥:private key ,没有特殊结尾;

公钥:public key,一般以.pub结尾;

------------------------------------------

实验:

此次通过4台虚拟机实验,分别是管理机:m01,和被管理机:nfs01/web01/backup

前提准备:各虚机环境为CentOS7.9,且可以远程22端口;

m01 ~]# ping nfs01 //测试连通的方法一,前台是本机/etc/hosts文件有对nfs01的解析

m01 ~]# nmap -p22 172.16.1.31 172.16.1.7 //测试方法二,用nmap方法扫描端口

------------------------------------------

接下来,在m01机器上创建密钥对

m01 ~]# ssh-keygen -t rsa  //这里解释一下,这是通过rsa方式加密,其中选项-t也可以不加的

//这个命令输入后,是一个交互式的生成密钥的方法,第一个需要处理的是让你确认保存目录,默认回车即可,第二个是输入加密的字符,默认回车也可以,

[root@m01 ~]# ll -a /root/.ssh/

//检查一下生成的文件,其中一个私钥,自用,一个公钥,控制哪个server,就给哪个server分发

-rw-------  1 root root 1675 Feb  3 14:49 id_rsa

-rw-r--r--  1 root root  397 Feb  3 14:49 id_rsa.pub

------------------------------------------

//下面是分发公钥的命令

[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.41

//输入命令后,如果第一次分发,也是进入交互模式,第一次输入yes同意,第二次输入172.16.1.41主机的密码,成功后会自动到对端生成/root/.ssh/authorized_keys文件

------------------------------------------

至此,免密钥登录完成,可以连接测试

[root@m01 ~]# ssh root@172.16.1.41 w //ssh连接后跟命令,直接执行一次再退出登录

------------------------------------------

小结,免密登录,一生生成密钥对命令,一条分发命令,搞定,涉及四个文件:

本端:

/root/.ssh/id_rsa

/root/.ssh/id_rsa.pub

/root/.ssh/known_hosts

对端:

/root/.ssh/authorized_keys

这三个文件没了,就不能免密登录了;

注:管理端只用生成一次就可以了,想免密登谁,就给谁发公钥,每给一个server发送一次免密登录,/root/.ssh/known_hosts就会记录一台主机的信息,公钥一次生成多次有效;

====================================================================

实验进阶:

在实验中,有两处交互式的命令,这里也可以改进,用无交互式的方式操作:

无交互式生成密钥对:

[root@m01 ~]# ssh-keygen -f ~/.ssh/id_rsa -P ''

[root@m01 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

//注,参数-f,是file,指定生成文件位置,-P,密码短语,设置为空

------------------------------------------

无交互式自动分发:需借助工具sshpass

[root@m01 ~]# yum -y install sshpass

#sshpass命令的基本使用:-p指定密码,例

[root@m01 ~]# ssh 172.16.1.6 w #检查是否需要输入密码,然后用下面的方式

[root@m01 ~]# sshpass -p1 ssh 172.16.1.6 w

#使用sshpass 与ssh-copy-id分发公钥

第1次连接的时候提示yes/no

解决思路: 临时取消即可,连接的时候不检查主机信息.

-o StrictHostKeyChecking=no 临时不检查主机信息.

[root@m01 ~]# sshpass -p1 ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no 172.16.1.31

------------------------------------------

至此,本机可以无交互的生成密钥对并分发管理主机了,下面写一下脚本自动运行:

[root@m01 ~]# cat /server/script/fenfaSSH.sh

#!/bin/bash

# author: mclind

# desc: this sh will fen fa rsa dao ge ge zhu ji

#1、变量

pass=1

ips="172.16.1.31 172.16.1.41"

. /etc/init.d/functions

#2、判断是否联网以及是否安装sshpass

echo "正在检查是否联网..."

ping -c10 www.qq.com >>/var/log/fenfa.log 2>&1

if [ $? -eq 1 ];then

  echo "联网失败"

  else

  echo "联网成功"

echo "正在检查是否安装sshpass..."

  which sshpass >>/var/log/fenfa.log 2>&1

  if [ $? -eq 0 ];then

    echo "sshpass已安装"

  else

    echo "正在安装sshpass..."

    yum install -y sshpass >>/var/log/fenfa.log 2>&1

  which sshpass >>/var/log/fenfa.log 2>&1

  if [ $? -eq 0 ];then

    echo "sshpass安装成功"

  else

    echo "sshpass安装失败"

fi

fi

fi

#3、创建密钥对

echo "正在检查是否存在密钥对..."

if [ -f ~/.ssh/id_rsa ];then

    echo "密钥对已存在"

  else

    echo "正在创建秘钥对...."

      ssh-keygen -t rsa  -f  ~/.ssh/id_rsa  -P ''  >>/var/log/fenfa.log 2>&1

    if [ $? -eq 0 ];then

      action "密钥创建成功" /bin/true

  else

      action "密钥创建失败" /bin/false

  fi

fi

#3.通过循环发送公钥

echo "分发原始公钥中..."

for ip  in  $ips

do

  sshpass -p${pass} ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no  $ip >>/var/log/fenfa.log 2>&1

  if [ $? -eq 0 ];then

      action "$ip 公钥分发 成功" /bin/true

  else

      action "$ip 公钥分发 失败" /bin/false

  fi

done

至此,脚本完。本次实验完。

===============================================================================================

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容