一、什么是Openssh

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。

知识延伸:
ssh协议有两个版本:
v1:基于CRC-32 做MAC,不安全; (一般用于实现主机认证)
v2:基于协议协商选择双方都支持的最安全的MAC机制
基于DH做密钥交换,基于RSA或DSA实现身份认证,从而实现无需输入账号面膜
客户端通过检查服务器端的主机秘钥来判断是否能够继续通信;
认证方式:
1、基于口令的认证
2、基于密钥的认证

二、为什么要使用OpenSSH

由于传统的telnet、rcp ftp等工具是明文传输数据的,对数据安全性存在很大的安全隐患,而OpenSSH可以对传输的数据进行加密从而大大提高了数据的安全性。

三、OpenSSH程序简介

1、OpenSSH的分为客户端和服务端两部分

Clients端的配置文件:/etc/ssh/ssh_config
Server端的配置文件:/etc/ssh/sshd_config
Server端服务脚本:/etc/rc.d/init.d/sshdOpenSSH在Linux系统中默认是安装并启动的

openssh 主要的关键包有四个
openssh.x86_64 5.3p1-104.el6 //服务端和客户端的公共组件
openssh-askpass.x86_64 5.3p1-104.el6 //
openssh-clients.x86_64 5.3p1-104.el6 //客户端安装包
openssh-server.x86_64 5.3p1-104.el6 //服务端安装包

openssl-clients  几个常用文件
[root@1inux ssh]     # rpm -ql openssh-clients
/etc/ssh/ssh_config  //客户端配置文件
/usr/bin/scp    //远程复制文件
/usr/bin/sftp    //远程文件共享
/usr/bin/slogin
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan
openssl-server 几个常用文件
/etc/rc.d/init.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd

2、服务器端配置文件/etc/ssh/sshd_config 主要参数详解

服务端配置文件是让别人登陆时使用的
注:配置文件中使用“#”注释掉的一般就是使用默认
#Port 22 //默认端口号,为了其安全一般要更改为其他端口
#AddressFamily any //说明要监听任意地址
#ListenAddress 0.0.0.0 //监听本机所有IPV4的ip
#ListenAddress :: //监听本机所有的IPV6的地址
Protocol 2 监听的协议版本
# HostKey for protocol version 1 //说明key的协议版本
SyslogFacility AUTHPRIV //使用AUTHPRIV 记录日志
#LogLevel INFO //log日志级别

#Authentication:            //认证相关
#LoginGraceTime 2m    //登陆宽限时长  默认2分钟不登录自动关闭
#PermitRootLogin yes    //是否支持管理员直接登陆
#StrictModes yes    //是否使用严格模式 (严格检查用户的某些相关信息)
#MaxAuthTries 6        //最大尝试次数  (6次以后终端断开)
#MaxSessions 10        //最大并发允许链接数 (超过 将拒绝)
#RSAAuthentication yes    //是否支持RSA密钥认证
#PubkeyAuthentication yes    //是否支持公钥认证
#AuthorizedKeysFile     .ssh/authorized_keys  //默认保存口令的文件
#PermitEmptyPasswords no        //是否支持空密码登陆
PasswordAuthentication yesUsePAM yes //是否使用PAM 认证( 是一种统一认证框架)
X11Forwarding yes     //是否转发图形界面请求 (可以打开远程服务器图形界面)
Subsystem       sftp    /usr/libexec/openssh/sftp-server
#UseDNS yes        //是否允许DNS反解  比较浪费时间一般更改为no/etc/ssh/ssh_known_hosts  //保存已经认可主机的文件

3、客户端配置文件/etc/ssh/ssh_config 主要参数详解

客户端配置文件时登陆别人的ssh使用的
#Host * //表示连接所有主机
#Port 22 //默认连接端口
#Cipher 3des //加密时使用的加密机制
#StrictHostKeyChecking ask //严格的主机秘钥检查 即第一次连接时是否询问

四、客户端ssh的使用

1、ssh的基本语法ssh [OPTIONS] [user]@server [COMMAND]-l user: 以指定用户身份连接至服务器;默认使用本地用户为远程登录时的用户;ssh user@serverssh -l user server

[root@1inux ~]# ssh centos@172.16.66.81
The authenticity of host ‘172.16.66.81 (172.16.66.81)’ can’t be established.
RSA key fingerprint is d6:3b:33:71:32:69:7a:dd:47:c2:49:03:ec:03:a1:5e.
Are you sure you want to continue connecting (yes/no)?
[root@1inux ~]# ssh -l centos 172.16.66.81
The authenticity of host ‘172.16.66.81 (172.16.66.81)’ can’t be established.
RSA key fingerprint is d6:3b:33:71:32:69:7a:dd:47:c2:49:03:ec:03:a1:5e.
Are you sure you want to continue connecting (yes/no)?

        -p PORT:指明要连接的端口:

[root@1inux ~]# ssh -p 22 -l centos 172.16.66.81
The authenticity of host ‘172.16.66.81 (172.16.66.81)’ can’t be established.
RSA key fingerprint is d6:3b:33:71:32:69:7a:dd:47:c2:49:03:ec:03:a1:5e.
Are you sure you want to continue connecting (yes/no)?

        -X :启用X11Forwarding,即转发X界面的请求;-x: 禁用;-Y:  启用信任的X11Forwarding2、ssh 基于秘钥的认证2.1、ssh-keygen语法:ssh-keygen [OPTIONS]-t {rsa|dsa} 密钥类型 一般使用rsa-b # 指明密钥长度-f /PATH/TO/OUTPUT_KEYFILE  指明密钥文件-P '' :指明加密密钥的密码,表示使用空密码

[root@1inux ~]# ssh-keygen -t rsa //生成密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_90 //定义保存的密钥文件名
Enter passphrase (empty for no passphrase): //要求对生成的密钥对加密,也可以不加密 输入两次回车就OK
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_90. //说明已经生成密钥
Your public key has been saved in /root/.ssh/id_90.pub. //说明已经生成公钥
The key fingerprint is:
7a:17:b3:e7:6f:54:a1:30:23:62:7c:04:37:10:52:08 root@1inux
The key’s randomart image is:
±-[ RSA 2048]----+
| E…+==+ |
| …+.o.+ . |
| . o . + . .|
| . .|
| S o . |
| . + . |
| . . o … |
| . . o . |
| .o. |
±----------------+
[root@1inux ~]#
[root@1inux ~]# ls .ssh/
id_90 id_90.pub known_hosts
[root@1inux ~]#

也可以指明秘钥路径 及密码

[root@1inux .ssh]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ‘’ //经测试 名字必须为id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
33:c3:f8:f3:2c:ed:88:cc:db:7a:97:5f:d0

OPENSSH 详解相关推荐

  1. linux安装openssh服务器的命令,ubuntu 安装openssh服务器的教程详解

    1.安装openssh 首先得安装 openssl 和zlib 安装openssl ---下载openssl-1.0.1j.tar.gz,解压到/usr/openssl/目录下进入解压目录 执行./c ...

  2. Nmap扫描教程之基础扫描详解

    Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...

  3. ansible 详解

    文章目录 一.ansible 简介 1.1 ansible 是什么? 1.2 ansible 特点 1.3 ansible 架构图 二.ansible 任务执行 2.1 ansible 任务执行模式 ...

  4. sshd系统自带启动脚本详解

    SSH 为 Secure Shell 的缩写.sshd服务是linux系统中最经常使用的服务之一.由于其规避了明文传送口令.内容本文及中间人***的安全隐患,因此经常作为远程管理系统的首选方案.虽然各 ...

  5. java jsch api_详解Java使用Jsch与sftp服务器实现

    在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件.本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接. 一.什么是SFTP ...

  6. SSH原理之图文详解

    一.Telnet和SSH 1.Telnet        Telnet是一个远程连接服务是一个C/S架构,具有Server端和Client端,Client通过telnet协议连接到服务器端,这是早期常 ...

  7. python编程入门与案例详解pdf-这些年我读过的技术经典图书(附电子版下载地址)...

    C技术资料 1.<> 作者: 谭浩强 这是我推荐的第一本书, 也是我接触的第一本书, 为什么把它放在第一位, 因为我觉得这本书对我的影响很大, 感觉这本书的最大特点是: 内容很全面, 内容 ...

  8. 从程序详解拒绝服务***

    从程序详解拒绝服务*** 拒绝服务(Denial of Service,  DoS)***是最简单的网络***形式之一,它只阻止对服务或资源的访问,而不是试图窃取信息.DoS***有两种常见的形式:使 ...

  9. java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例

    java通过ssh连接服务器执行shell命令详解 java通过ssh连接服务器执行shell命令:JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转 ...

最新文章

  1. Oracle SQL 空值排序(Nulls)
  2. java实现手机短信验证全过程
  3. ASP.NET Core 3.x启动时运行异步任务(一)
  4. java ssm 多租户_(十一)java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统- SSO单点登录之OAuth2.0登录流程(2)...
  5. 项目管理(4):备战pmp
  6. pptx模块的图片框
  7. (转) 淘淘商城系列——Redis集群的搭建
  8. 极客学院视频源码资料
  9. vb连接mysql出现的问题_连接数据库问题用户定义类型未定义【vb6】
  10. session的removeAttribute()和invalidate()的区别
  11. web前端到底怎么学?干货资料!
  12. android滑动fragment,android中ViewPager结合Fragment进行无限滑动
  13. 计算机控制课设串级回路,计算机控制系统课程设计
  14. 芯片数据分析步骤5 过滤探针
  15. windows下CMD常用命令
  16. 购物直播APP开发系统方案
  17. UVALive 3713 Astronauts(2SAT)
  18. AM437X系列编译环境搭建
  19. 网络编程close与shutdown的区别
  20. 万豪国际集团在华运营酒店超过400家

热门文章

  1. class Model(nn.Module)
  2. 一次Linux线上系统page allocation failure问题处理实战记录
  3. HFS for Windows 9.0 安装注意事项 [2013-07-15更新]
  4. PhoneGap安装和使用教程
  5. 浏览器开发工具请求头与响应头属性介绍
  6. ios13 无法传参_小偷的终极克星!iOS13真正杀手锏:关机断网也可定位设备
  7. 火溶CEO王伟峰:Unity3D手机网游开发
  8. Arduino 和LCD1602液晶屏 I2C接口 万年历时钟可调
  9. Java 文件操作(File类)
  10. Qt软件开发_解决中文路径无法识别问题