OpenSSH详解

一、SSH简介
二、ssh的客户端程序
三、sshd服务端配置

一、SSH简介
Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。加密保证了数据的保密性和完整性。SSH采用公钥加密技术来验证远程主机,以及(必要时)允许远程主机验证用户。
SSH 通常用于远程访问和执行命令,但是它也支持隧道,转发任意 TCP 端口以及 X11 连接;它还能够用 SFTP 或 SCP 协议来传输文件。
OpenSSH:
    telnet:C/S架构  23/tcp
        明文:认证等均为非加密 //任何人都可以监听
        Linux:禁止管理员直接登录,默认
    ssh:C/S架构22/tcp,安全地远程登录
    协议:
        ssh v1:废弃,man-in-middel中间人攻击,不能避免
        ssh v2
    持久链接:不会自动断开,除非空闲超时,或者client主动断开
    
    公钥:放在server 。默认/root/.ssh/authorized_keys文件中追加
    私钥:建立链接的时候,加密一段随机数据,用于实现身份认证
    
第一次:建立链接,放在已知列表中,成为可信主机 ,client的~/.ssh/known_hosts
数据交换:基于DH算法或者其他密钥分发算法,实现密钥分发
    使用对称密钥加密传输
    定时更换对称密钥,避免对称密钥被破解
密码通过:预共享密钥实现加密 //不安全
    
主机认证:需要用到主机认证密钥,由服务器端维护提供
ssh支持两种认证:
    1.基于口令的认证://密码
    2.密钥认证//
            用户提供一对儿密钥,私钥留存于用户端,公钥放在服务器上
ssh:是一种协议
OpenSSH:ssh协议的开源实现
    sshd:ssh daemon  /etc/ssh/sshd_config
    ssh:ssh cli        /etc/ssh/ssh_config
        scp,sftp

二、ssh的客户端程序        
ssh客户端程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     ssh  [option] [[user@]host] [COMMAND]
     ssh  [options] -l user host [ command ]
     省略主机名:使用本地用户名,作为远程登录的用户名
         -l login-name
         -p port,远程服务器的端口
         -o options链接选项
             // 使用-o覆盖指定配置文件中的定义
         -X :支持x11转发
         -Y:支持受信任的x11转发
         -b :指定要使用的本地地址作为链接 // 假如s有acl,client可能有多个地址
         -i identity_file: // 密钥对,可能有多个,指定本地密钥
                 默认:~/. ssh /id_rsa ,~/. ssh /id_dsa ,~/. ssh /id_ecdsa
                 // 私钥
     配置文件: /etc/ssh/ssh_config  ,~/. ssh /config
         Host 192.168.4.1

    
SSH支持的认证方式:
    基于口令认证:
    基于密钥认证:
        1.生成一个密钥对儿  ssh-keygen [-b bit] [-t type] //私钥可以不加密,也可以加密
        2.ssh-copy-id
        3.别名~/.ssh/config
                host mt 192.168.4.109 22
            vim /etc/hosts
                192.168.4.109 mt //能够解析
                
    windows客户端:secret,xmanager(xshell),ssh,secureCRT,putty
        
    ssh-keygen 

1
2
3
4
      -b bits  // 默认2048bits
         -t  type //dsa 密钥长度固定为1024bits,rsa,ecdsa 256 /384/512 ,默认rsa
         -f 指定输出保存位置,默认~/. ssh /
         -N 指定私钥加密密码

     
    ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''//加密密钥为空
        id_dsa的权限必须是600
                    
    ssh-copy-id [-i 公钥] user@host
        -i 指定公钥
        复制本地的id_rsa.pub的内容到server的~/.ssh/authorized_keys中
        ssh-copy-id root@192.168.4.100 //可以不使用-i也可以
    //注:只对当前主机当前用户有效,其他用户需要独立添加记录    
    
scp:secure cp,跨主机安全文件传输的工具
    scp [option] SRC....  DEST/
    scp [options] SRC  DEST
    
    存在两种方式:
        PUSH:scp [option] /paht/to/from/somefile ... [user@]hostname://path/to/somewhere
        PULL:scp [option] [user@]hostname:/path/to/somefile...  /path/to/somefile
        
        从本地复制到远程,从远程复制到本地
    -r:递归复制
    -p:保存源文件的权限及从属关系
    -q:静默模式 //可能会覆盖目标文件,建议慎用
    -p port:端口
    
sftp:Openssh的一个子系统:sftp //远程登录目标主机,获取多个文件
    sftp root@192.168.4.109 [-p port]
    help //查看帮助
        lpwd
        lls //l开头的,都是本地命令,其他的都是远程主机上的
        
    ftp:file transfer protocol,明文
        安全传输机制:
            ftps:ftp over ssl
            sftp:ftp over ssh        
    sftp:
        C/S
        S:由sshd服务进程实现,是ss的一个子系统,在CentOS上默认启用
        C:sftp命令
    
三、sshd服务端配置
配置文件:/etc/ssh/sshd_config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#Port 22    //强烈建议,不要使用默认端口
#AddressFamily any
#ListenAddress 0.0.0.0    //服务器可以监听多个地址,一个公网,一个私网,建议做vpn
#ListenAddress ::    
#Protocol 2
HostKey  /etc/ssh/ssh_host_rsa_key  // 主机密钥所在
++++++++
#KeyRegenerationInterval 1h //每隔1h生成一次密钥,加密数据使用的对称密钥
SyslogFacility AUTHPRIV   // 日志记录,SyslogFacility:日志设施,AUTHPRIV:表示记录于 /var/log/secure
#LogLevel INFO        //日志级别,大于等于该级别的都会被记录
#LoginGraceTime 2m        登录宽限期,等待client输入密码的时间
#PermitRootLogin yes    限制root用户远程登录
#AllowUsers user1 user2 ...;允许使用ssh服务的用户白名单
#AllowGroups grp1,grp2,    
#DenyUsers user1 user2 ..;拒绝使用ssh 
#当客户端连上服务器端后,若没有任何操作则,服务器端默认会,每隔一定时间发送一个alive消息给客户端寻求客户端应答,默认一共发三次.若都没有回应,则断开连其中        
#ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接
#ClientAliveCountMax 3 #server发出请求后,客户端没有响应得次数达到3,就自动断开连接,正常情况下,client不会不响应
#HostbasedAuthentication  no #禁用基于主机的身份验证
#ChrootDirectory /home/%u  #使用 Chroot SSHD 将 SFTP 用户局限于其自己的主目录
#Compression  {yes|no|delayed} #指令压缩,#默认是delayed 意思就是等到用户认证结束后再对数据进行压缩
#StrictModes yes        
#MaxAuthTries 6            尝试次数
#MaxSessions 10            最多保持会话
#RSAAuthentication yes  支持rsa的密钥认证
#PubkeyAuthentication yes    公钥认证
AuthorizedKeysFile      . ssh /authorized_keys  // 认证文件
PasswordAuthentication  yes  // 支持口令认证
ChallengeResponseAuthentication no  // 不安全,建议关闭
PrintMotd  yes  #“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。
# Kerberos options //专用kerberous认证
UsePAM  yes  // 使用pam模块
X11Forwarding  yes  // 是否支持x11转发
关闭: #UseDNS yes //反解用户名,建立ssh链接的时候,有时候很慢,及时由于他

手册:
    man_sshd_config
    man sshd









本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/2061316,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值