1、ssh介绍:
SSH是secure shell protocol的简写,由IETF网络工作小组制定,在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行传输,确保传递的数据安全。
默认状态下,SSH服务主要提供两个服务功能:一个是提供类似telnet远程连接服务器的服务,即ssH服务,另一个类似FTP服务端sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务。
提醒:ssh客户端还包含一个很有用的远程安全拷贝命令SCP,也是通过ssh协议工作的。
ssh的工作机制大致是本地ssh客户端先发送一个连接请求到远程的ssh服务端,服务端检查连接的客户端发送到数据包和IP地址,如果确认合法,就会发送密钥给ssh给客户端,此时,客户端本地再将密钥发回给服务端,自此连接建立。

ssh2同时支持RSA和DSA密钥,但是SSH1仅支持RSA密钥

2、ssh服务认证类型:
1)基于口令的安全认证:
主机IP,端口号,用户名,密码
2)基于密钥的安全验证
密钥对验证SSH:
ssh-keygen –t rsa/des
指定密钥对位置,回车在宿主目录的.ssh/下
设置私钥短语
确认短语
上传公钥到服务器,在服务器中导入公钥文本到“~/.ssh/authorized_keys该文件不能有写入权限”

3、ssh客户端附带的远程拷贝scp命令
scp的基本语法:
推送文件到目标服务器:
scp -P22 /etc/a.txt root@10.0.0.1:/tmp
下载目标服务器文件到本地服务器:
scp -P22 root@10.0.0.1:/tmp/a.txt /etc/
拷贝目录:
scp -P22 -r /etc/a.txt root@10.0.0.1:/tmp

scp参数:
-P 指定端口号,注意是大写的P
-r 复制目录
-p 拷贝过程中保持文件或目录的原始属性。

scp是加密的远程拷贝,可以下载和上传文件和目录,但每次都是全量拷贝,它会在每次拷贝时把以前拷过的文件再拷贝一次,所以效率不高。

4、基于SSH加密传输的SFTP
sftp -oport=22 root@192.168.233.132
put install.log 上传到对方服务器的家目录下,也可以指定目录
get zhang.ch 下载到本地的家目录

5、SSH配置参数
1)服务监听设置
Vim /etc/ssh/sshd_config
Port 22 //监听端口,应做修改
Protocol 2 //使用版本2更安全
Listenaddress 0.0.0.0 //监听本地网卡地址,提高隐蔽性
useDNS //禁用DNS反向解析,提高响应时间
GSSAPIAuthentication no //解决SSH连接慢的问题
2)用户登陆控制
Vim /etc/ssh/ssh_config
Permitrootlogin no //禁止root用户登陆,可普通用户登陆后SU到root
Permitemptypasswords no //禁止空密码用户登陆
Logingracetime 2m //登陆验证时间2分钟
Maxauthtries 6 //链接最大重试次数
AllowUsers yh1 yh2@172.16.8.8 //只允许yh1登陆yh2用户只能从指定地址登陆,多用户可用空格分隔。
3)登陆验证方式
Vim /etc/ssh/sshd_config
Passwordauthentication yes //启用密码验证,相对安全较低
Pubkeyauthentication yes //启用密钥对验证,安全较高
Authorizedkeysfile .ssh/authorized_keys //指定公钥库数据文件
4)使用SSH客户端程序
Windows平台中可用puttyCN、winSCP、secureCRT图形工具。
PuttyCN可下载zip免安全版网站:http://www.chiark.greenend.org.uk/
winSCP可下载ZIP的中文版,网站:http://winscp.net/
Linux平台可直接SSH远程登陆“ssh –p 22 zhang@172.16.8.8”接受RSA密钥保存到~/.ssh/known_hosts文件中,密码验证成功登陆。
可使用SCP远程复制:scp zhang@172.16.8.8:/etc/passwd /root/pwd.txt复制到本地 scp –r /etc/vsftpd/ root@172.16.8.8:/opt 上传文件到服务器
Sftp root@172.16.8.8 将登陆到服务器,可执行上传和下载。
5)SSH连接慢的问题解决:
useDNS //禁用DNS反向解析,提高响应时间
GSSAPIAuthentication no //解决SSH连接慢的问题

6、实现批量分发文件功能
要求:用同一用户(sshuser)在所有服务器下实现从A服务器本地服务器分发数据到其他服务器上,并能远程执行命令。且不需要密码验证。
步骤:
# useradd sshuser
# id sshuser
uid=556(sshuser) gid=556(sshuser) 组=556(sshuser)
# echo 123.com|passwd --stdin sshuser
$ whoami
sshuser
#ssh-keygen -t dsa
回车。。
#ll -a ~/.ssh/
总用量 16
drwx------ 2 sshuser sshuser 4096 4月 3 23:23 .
drwx------ 5 sshuser sshuser 4096 4月 3 23:23 ..
-rw------- 1 sshuser sshuser 668 4月 3 23:23 id_dsa #私钥
-rw-r--r-- 1 sshuser sshuser 599 4月 3 23:23 id_dsa.pub #公钥
拷贝公钥到服务器上:
#ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 22 sshuser@192.168.233.132"
YES回车并输入密码
#ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 22 sshuser@192.168.233.130"
YES回车并输入密码

发送到服务器后文件被改名authorized_keys放在.ssh下:
$ ll -a .ssh/
total 12
drwx------ 2 sshuser sshuser 4096 Apr 3 23:31 .
drwx------ 4 sshuser sshuser 4096 Apr 3 23:31 ..
-rw------- 1 sshuser sshuser 599 Apr 3 23:31 authorized_keys

编写脚本,批量分发文件:
#!/bin/bash
. /etc/init.d/functions
for i in 130 132;do
scp -P 22 -rp $1 sshuser@192.168.233.$i:~
if [ $? == 0 ];then
action "192.168.233.${i}分发文件成功!" /bin/true
else
action "192.168.233.${i}分发失败!" /bin/false
fi
done

7、远程sudo的方法:
visudo -c 检查语法
visudo文档提示信息:
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
Defaults requiretty
可以通过ssh -t hostname sudo <cmd> 执行命令
也可以注销Defaults requiretty就可以远程执行sudo提取了

scp -P22 -rp hosts sshuser@192.168.233.132:~ 先将文件拷贝到对方家目录
hosts 100% 158 0.2KB/s 00:00
$ ssh -p22 sshuser@192.168.233.132 sudo /bin/cp ~/hosts /etc/ 不能远程执行sudo命令,所以报错
sudo:抱歉,您必须拥有一个终端来执行 sudo
通过-t选项就可以通过SSH远程sudo提取执行命令了:
$ ssh -t -p22 sshuser@192.168.233.132 sudo /bin/cp ~/hosts /etc/
[sudo] password for sshuser:
Connection to 192.168.233.132 closed.

8、SSH批量分发与管理小结:
1)利用root做SSH key验证
简单,易用
安全性差,同时无法禁止root远程连接
2)利用普通用户做,先把分发到文件拷贝到服务器的家目录,然后sudo提前拷贝到服务器的对应权限目录
安全,配置复杂
3)同方案2,只是不用sudo,而是设置suid对固定命令提权。
相对安全
复杂,安全性较差,任何人都可以用suid权限的命令。

企业级生产场景批量管理,自动化管理方案:
1)最简单最常用ssh key,功能最强大,一般中小型企业用,50-100台
2)门户级别流行的puppet批量管理工具,复杂
3)saltstack批量管理工具,特点:简单,功能强大,配置复杂。

linux sshd服务的更多相关文章

  1. linux sshd ssh 服务的启动和使用

    这里使用sshd服务登录到linux系统的方法,不少同学走了弯路,包括我,我一直使用vmware虚拟linux学习使用的,后来windows病毒的原因转入到linux系统中使用 1,sshd服务安装 ...

  2. Linux系统 SSHD服务安全优化方案

      # 1. 修改默认端口 #Port 22 # 2. 修改监听协议,只监听某个或某些网络协议 #AddressFamily any AddressFamily inet # 3. 修改ssh只监听内 ...

  3. Linux之sshd服务

    ---恢复内容开始--- ---恢复内容结束--- 一.linux中对服务管理与控制(以sshd为例) 1.什么是服务 可以用来给客户提供相关操作,对自己没有什么好处 2.用什么控制服务 系统初始化进 ...

  4. linux初学者-sshd服务

     linux初学者-sshd服务   在linux系统操作中,经常需要连接其他的主机,连接其他主机的服务是openssh-server,它的功能是让远程主机可以通过网络访问sshd服务,开始一个安全s ...

  5. Linux中的sshd服务

    Linux中的sshd服务,主要用于pst终端,远程连接到linux服务中 看sshd服务状态 service sshd status 停止sshd服务 service sshd stop 启动ssh ...

  6. Linux中Sshd服务配置文件优化版本(/etc/ssh/sshd_config)

    Linux中Sshd服务配置文件优化版本(/etc/ssh/sshd_config) # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Ex ...

  7. Linux系统的ssh与sshd服务

    当主机中开启openssh服务,那么就对外开放了远程连接的接口 ssh为openssh服务的客户端,sshd为openssh服务的服务端 远程管理工具ssh具有数据加密传输.网络开销小以及应用平台范围 ...

  8. 《linux就该这么学》第十一节课: 第九章,网卡绑定与sshd服务

    8.4.服务的访问控制列表 TCPwrappers是RHEL7中默认启用的流量监控程序,能够对服务做出允许或拒绝. TCPwrappers服务由两个文件控制:  /etc/hosts.allow    ...

  9. Linux系统管理命令-systemctl 和 sshd 服务

    一系统服务管理命令systemctl 开启一个服务 : systemctl start sshd 关闭一个服务: systemctl stop sshd 查看一个服务的状态: systemctl st ...

随机推荐

  1. mov指令具体解释

    MOV指令能够在CPU内或CPU和存储器之间传送字或字节.它传送的信息能够从寄存器到寄存器,马上数到寄存器,马上数到存储单元,从存储单元到寄存器.从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄 ...

  2. 命令行界面下使用emca安装配置Oracle Database Control实战

    作为命令行忠有用户,server端软件的运维都倾向于使用命令或 脚本完毕,非常讨厌资源占用非常大的GUI.Oracle数据库作为重要的server端软件.其安装运维自然也全然支持纯命令行方式.虽然同一 ...

  3. Unity 3D游戏开发引擎:最火的插件推荐

    摘要:为了帮助使用Unity引擎的开发人员制作更完美的游戏.我们精心挑选了十款相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJ ...

  4. Python 项目实践一(外星人入侵小游戏)第五篇

    接着上节的继续学习,在本章中,我们将结束游戏<外星人入侵>的开发.我们将添加一个Play按钮,用于根据需要启动游戏以及在游戏结束后重启游戏.我们还将修改这个游戏,使其在玩家的等级提高时加快 ...

  5. 利用aop插入异常日志的2种方式

    AOP是面向切面编程,利用这个技术可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分的耦合性降低,提高代码的可重用性,同时提高开发效率(来自百度百科). Spring AOP有两种实现方式,一 ...

  6. RESTClient调试POST方法&Reflector+de4dot反混淆破解dll

    RESTClient调试POST方法 RESTClient是火狐的一款WebAPI测试工具. 1.先看下我们要调试的接口

  7. 基于Jmeter的PostgreSQL空间性能测试笔记

    这是很早之前做过的一个测试,最近在整理postgresql测试相关的资料,所以也把它拿出来了与大家分享. 首先解释一下所谓的PostgreSQL空间性能,主要是基于postgis的空间数据导入性能,详 ...

  8. npm lodash

    在数据操作时,Lodash 就是我的弹药库,不管遇到多复杂的数据结构都能用一些函数轻松拆解. ES6 中也新增了诸多新的对象函数,一些简单的项目中 ES6 就足够使用了,但还是会有例外的情况引用了少数 ...

  9. windows server数据库备份

    @echo off //设置生成文件名字 set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"//使用mysqldump输出sql文件 cesec ...

  10. 【ASP.NET Core】运行原理(4):授权

    本系列将分析ASP.NET Core运行原理 [ASP.NET Core]运行原理(1):创建WebHost [ASP.NET Core]运行原理(2):启动WebHost [ASP.NET Core ...