1.远程管理服务介绍

(1)SSH是(Secure Shell Protocol)的简写,由IETF网络工作小组制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行机密处理,加密后在进行文件传输,确保了传递的数据安全。端口号是22(默认可以让root用户连接)

(2)Telnet不安全的链接,数据传输是明文的,端口号是23(默认不可以让root用户连接)

2.ssh远程管理服务远程连接的原理

(1)客户端:执行远程连接命令

(2)客户端:建立三次握手过程

(3)服务端:让客户端进行确认是否接受服务端的公钥信息

(4)客户端:进行公钥确认,接受到公钥信息

(5)服务端:让客户端确认用户密码信息

(6)客户端:进行密码信息确认

(7)远程连接建立成功

私钥和公钥的作用:

a.利用私钥和公钥对数据信息进行加密处理

b.利用公钥和私钥进行用户身份确认

基于密码的方式进行远程连接:公钥和私钥只能完成数据加密过程

基于私钥的方式进行远程连接:公钥和私钥可以完成认证身份的工作

3.ssh远程连接方式

(1)基于口令的方式进行远程连接:连接比较麻烦,连接不太安全

(2)基于秘钥的方式进行远程连接:连接方便,连接比较安全

基于秘钥方式连接过程(原理)

1.客户端(管理端) 执行命令创建秘钥对

  1. 客户端(管理端) 建立远程连接(口令),发送公钥信息
  2. 客户端(管理端) 再次建立远程连接
  3. 服务端(被管理端) 发送公钥质询信息
  4. 客户端(管理端) 处理公钥质询信息,将质询结果返回给服务端
  5. 服务端(被管理端) 接收到质询结果,建立好远程连接

4.ssh实现基于秘钥连接的部署

(1)管理端创建密钥对

[root@m01 ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:h/xJtYDRMWBQhA1KWk8bY3U2PKr13kJL/RqA0LEDVyM root@m01
The key's randomart image is:
+---[DSA 1024]----+
| o OOE=O. |
| + =.O.O++ |
| . . + =.... |
| oo+ o . |
| oS.+.. |
| . ++o. |
| +oo.. |
| + ... |
| ... |
+----[SHA256]-----+

(2)管理端需要将公钥进行分发

[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub 10.0.0.41
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_dsa.pub"
The authenticity of host '10.0.0.41 (10.0.0.41)' can't be established.
ECDSA key fingerprint is SHA256:l5Dqj1zZpxfY5PZZP3+40i4CdG2kw52NLl1PYL++bds.
ECDSA key fingerprint is MD5:3f:ea:c5:82:f7:c2:1d:63:54:da:1a:48:a3:ea:00:27.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.41's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '10.0.0.41'"
and check to make sure that only the key(s) you wanted were added.

(3)被管理端检查公钥信息

[root@backup ~]# cat /root/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAOrox0Ml74i6I1B1as0xg9wfpFNvpLGw673r0jciVYSpXXbn8LV8xK/UR90VcNnKH2Xfw5rPU/dX9on0HnaJW2lIMqzhmCCEigXotmO1q8Djbi10q2FLphpArmXdh7kcSW73JXsB+tP4LkvOuuq4kwZet6wnETcVVH7ocCglwMuDAAAAFQCLQz3xaSR/iu2ArrUK90fGivLJLQAAAIEA0dlRLq6gB34C7UMZXBwbxozzaAoabwYIltK7PtuAwkgF3Rt8aVSPxg5yEJOYwOWa0r5M6BnwpjUr/VwpI2NdZDhlI/T9Raw6Lnsutpl+RlgfJ8BKIJlA+ZnwL+p1AplOJzy29AV0SKwMsInDAb7TKy1z9E4hiYNVWWaUvXcNCKYAAACAYm6QX1/rksSjeWvy6HC9q1oyOj7J/13OJOc3zbv8KdO4rXJOV5sIKk+Mfce02rPeL4JN0yyRjBlCoUlSGZzsW9WD02Ndq50nDEHGDyKTKPSewqit7LFVeyeBq2bDR/190i50aHohmrnJSBgFvmpAeVlIp+nx99y/11D/r14rjCU= root@m01

(4)进行远程连接测试

[root@m01 ~]# ssh 10.0.0.41 hostname
backup

(5)免交互进行公钥分发

a.下载软件
[root@m01 ~/.ssh]# yum install -y sshpass
[root@m01 ~/.ssh]# sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@10.0.0.41 -p22 "-o StrictHostKeyChecking=no"

(6)批量分发公钥的脚本

#!/bin/bash
for ip in {7,31,41}
do
echo "=============== fenfa pub_key with 172.16.1.$ip =============== "
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.$ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -eq 0 ]
then
echo "公钥信息分发成功 [ok]"
echo ""
else
echo "公钥信息分发失败 [failed]"
echo ""
fi
done
[root@m01 ~/.ssh]# sh fenfa.sh
=============== fenfa pub_key with 172.16.1.7 ===============
公钥信息分发成功 [ok]

=============== fenfa pub_key with 172.16.1.31 ===============
公钥信息分发成功 [ok]

=============== fenfa pub_key with 172.16.1.41 ===============
公钥信息分发成功 [ok]

(7)对远程主机进行批量检查

#!/bin/bash

CMD=$1

for ip in {7,31,41}
do
echo "=============== check pub_key with 172.16.1.$ip =============== "
ssh 172.16.1.$ip $CMD >/dev/null
if [ $? -eq 0 ]
then
echo "分发测试检查成功 [ok]"
echo ""
else
echo "公钥测试检查失败 [failed]"
echo ""
fi
done
[root@m01 ~/.ssh]#
[root@m01 ~/.ssh]# sh check.sh "ip a"
=============== check pub_key with 172.16.1.7 ===============
分发测试检查成功 [ok]

=============== check pub_key with 172.16.1.31 ===============
分发测试检查成功 [ok]

=============== check pub_key with 172.16.1.41 ===============
分发测试检查成功 [ok]

5.SSH服务配置文件

/etc/ssh/sshd_config 服务端配置文件

/etc/ssh/ssh_config 客户端配置文件

Port 22  ------ssh端口(默认为22)
ListenAddress 0.0.0.0 ------监听地址(指定一块网卡接收远程访问的请求,指定的地址是本地网卡的ip地址)
PermitEmptyPasswords no ------否允许远程用户使用空密码登录(默认不允许)
PermitRootLogin yes ------是否允许root用户登录(建议关闭)
GSSAPIAuthentication no ------是否开启GSSAPI认证功能(建议关闭)
UseDNS no ------是否开启反向DNS解析功能 (建议关闭)

6.ssh远程连接安全防范思路

1.用密钥登录,不用密码登陆

2.牤牛阵法:解决SSH安全问题

a.防火墙封闭SSH,指定源IP限制(局域网、信任公网)

b.开启SSH只监听本地内网IP(ListenAddress 172.16.1.61)

3.尽量不给服务器外网IP

4.最小化(软件安装-授权)

5.给系统的重要文件或命令做一个指纹 /etc/passwd md5sum inotify /bin 监控

6.给文件上锁 chattr +i

7.ssh服务相关命令

ssh-keygen ------创建公钥
ssh-copy-id ------分发公钥
sshpass ------免交互
##################################
sftp 172.16.1.41
ls       查看远程ftp服务器信息
cd   --- 查看远程ftp服务器信息
lls     查看本地ftp客户端信息
lcd  --- 查看本地ftp客户端信息
get  --- 下载信息
put  --- 上传信息
help --- 查看命令帮助
bye  --- 退出ftp连接

Linux-远程服务ssh的更多相关文章

  1. Linux下 SSH远程管理服务

    第1章 SSH基本概述 1.1 SSH服务协议说明 SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组(Network Working Group )制定 在进 ...

  2. Debian 7(Linux) 安装SSH使用SecureCRT连接配置

    1 Debian 安装 ssh2 首先确保你的Debian或者linux安装ssh并开启ssh服务 Debian和ubuntu的安装方法一样,只要源OK的话,可以直接安装 apt-get instal ...

  3. linux查看ssh用户登录日志与操作日志

    linux查看ssh用户登录日志与操作日志 2013-11-01转载   ssh用户登录日志 linux下登录日志在下面的目录里:  代码如下 复制代码 cd /var/log 查看ssh用户的登录日 ...

  4. Linux下SSH免密码登录

    转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...

  5. Linux下SSH+Firefox

    Linux下SSH+Firefox 简明FQ攻略 FQ的软件有很多,楼主原来在Windows下用过Tor(洋葱头).Puff.freegate等,一般只需要打开FQ软件,简单的设置后就可以FQ浏览了. ...

  6. Linux修改SSH端口和禁止Root远程登陆

    Linux修改ssh端口22 vi /etc/ssh/ssh_config vi /etc/ssh/sshd_config 然后修改为port 8888 以root身份service sshd res ...

  7. linux中ssh登录Permanently added (RSA) to the list of known hosts问题解决

    文章出自http://www.2cto.com/os/201307/227199.html linux中ssh登录Permanently added (RSA) to the list of know ...

  8. linux下ssh端口的修改和登录

    linux下ssh端口的修改和登录 首先修改配置文件 vi /etc/ssh/sshd_config 找到#Port 22一段,这里是标识默认使用22端口,添加如下一行: Port 50000 然后保 ...

  9. (转)Linux修改SSH登录欢迎语

    场景:感觉这样做挺个性的,做个记录! 1 Linux修改SSH的欢迎语 众所周知,Linux系统并没有像Windows一样自带远程桌面连接,虽然可以通过后期安装VNC之类的软件来弥补这个缺点,但用了L ...

  10. Jenkins踩坑系列--你试过linux主机ssh登录windows,启动java进程吗,来试试吧

    一.问题概述 在一个多月前,组长让我研究下持续集成.我很自然地选择了jenkins.当时,(包括现在也是),部分服务器用的是windows主机. 我当时想了想,如果我把jenkins装在windows ...

随机推荐

  1. 对spring创建对象时为何要使用接口

    对spring创建对象时为何要使用接口,而使用接口的实现类会报错 接上一篇问题的解答:Spring AOP获取不了增强类(额外方法)和无法通过getBean()获取对象 此问题发生在动态代理时,比如对 ...

  2. 驰骋CCFlow开源工作流程引擎如何设置PDF打印

    前言 经常有驰骋CCFlow爱好者朋友提问关于打印相关问题.在这篇博文中大家介绍一下工作流引擎CCFlow的HTML打印和PDF打印,针对Java版本和.NET版本有不同的操作步骤,包括开关设置.水印 ...

  3. Markdown使用概述

    Markdown使用概述 序言 作为一名编程学习的爱好者和初学者,由于学习编程的过程中总是存在遗忘以及很难动手写起来的问题,所以在看了许多关于编程学习方法的文章之后,选择使用typora作为我的笔记工 ...

  4. [Linux] 完全卸载mysql

    参考 https://www.jianshu.com/p/ef58fb333cd6

  5. [web] 虚拟机网络设置

    三种模式 桥接(Bridged):主机网卡--虚拟网桥--虚拟机网卡,把主机虚拟为交换机,虚拟机ip需与主机设置在同一网段,网关与DNS与主机网卡一致 地址转换(NAT):主机网卡--虚拟NAT设备- ...

  6. readlink 函数用法 -(转自 JK198310的专栏)

    相关函数: stat, lstat, symlink 表头文件: #include <unistd.h> 定义函数:ssize_t readlink(const char *path, c ...

  7. 详述盒子模型(包含padding、border、margin的详细用法和描述)

    提起盒子模型,我想无论是对于一个前端资深开发人员还是前端入门开发人员来说都不陌生,这是CSS最基础的知识. 但是惭愧地说,我之前理解的盒子模型,只是文字上的理解.我知道定义一个元素的宽度和高度时,设置 ...

  8. 201871030129-魏琦 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业链接 我的课程学习目标 (1)掌握Github协作开发程序的操作方法:(2)理解并掌握代码风格规范.代码设计规范.代码复审.结对编程概念: ...

  9. TVM 优化 ARM GPU 上的移动深度学习

    TVM 优化 ARM GPU 上的移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与桌面平台上所做的类似,在移动设备中使用 GPU 既有利于推理速度,也有利于能源 ...

  10. TensorFlow编程结构

    TensorFlow编程结构 TensorFlow 与其他编程语言非常不同. 首先通过将程序分为两个独立的部分,构建任何拟创建神经网络的蓝图,包括计算图的定义及其执行.起初这对于传统程序员来说看起来很 ...