OPENSSH服务

文章目录

        • 0.什么是OpenSSH Secure Shell(SSH)
        • 1.远程连接服务器
          • 1.1什么是远程连接服务器
          • 1.2远程连接服务器的功能
          • 1.3常见的远程管理工具方式
        • 2. SSH
        • 3. TELNET
        • 4. 如何实现加密
          • 4.1 SSH算法
          • 4.2 SSL
          • 4.3加密技术
            • 4.3.1非对称加密
            • 4.3.2CA
            • 4.3.3密钥技术证书作用
            • 4.3.4PFX
        • 5. ssh两种验证级别
        • 6. 解读SSH服务配置信息
        • 7.ssh特点
        • 8.SSH的工作机制
        • 9.SSH的加密技术
        • 10.SSH功能特点
        • 11.ssh命令使用
        • 12.客户端scp 跨机远程拷贝
        • 13.ssh免密设置
          • 13.1例一.虚拟和虚拟机之间实现ssh 互信,免登陆
          • 13.2例二. 通过xshell使用证书进行登陆
        • 14.ssh排查问题
        • 15.ssh章节小结
          • 15.1如何防止SSH登录入侵

0.什么是OpenSSH Secure Shell(SSH)

OpenSSH这一术语指系统中使用的Secure Shell 软件的软件实施。OpenSSH Secure Shell(SSH)用于在远程系统上安全运行shell。如果你在可提供ssh服务的远程Linux系统中拥有用户账户,则ssh是通常用来远程登录到该系统的命令。ssh命令也可以用于在远程系统中运行各个命令。

1.远程连接服务器

1.1什么是远程连接服务器

远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。
SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程 序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

1.2远程连接服务器的功能
  1. 分享主机运算能力
  2. 服务器类型有限度开放连接
  3. 工作站类型,只对内网开放
1.3常见的远程管理工具方式
  1. RDP(remote desktop protocal )协议,windows远程桌面管理(图形界面)
  2. telenet CLI界面下远程管理,几乎所有操作系统都有(内容明文传输) 23
  3. ssh CLI界面下的远程管理,几乎所有操作系统都有(内容加密传输) 类unix系统下主要 22
    远程管理方式(linux BSD Macos)
  4. RFB (remote frame buffer) 图形化远程管理协议 VNC (Virtual Network Computing)使用的协议。(在linux unix Macos 下的图形界面远程管理工具)

2. SSH

  1. SSH代表安全外壳(Secure Shell),它现在是通过互联网访问网络设备和服务器的唯一的主要协议。
  2. SSH默认情况下通过端口22运行;不过,很容易更改这个端口。
  3. SSH是一种非常安全的协议,因为它共享并发送经过加密的信息,从而为通过互联网等不安全的网络访问的数据提供了机密性和安全性。
  4. 一旦通讯的数据使用SSH经过加密,就极难解压和读取该数据,所以我们的密码在公共网络上传输也变得很安全。
  5. SSH还使用公钥用于对访问服务器的用户验证身份,这是一种很好的做法,为我们提供了极高的安全性。
  6. SSH主要用在所有流行的操作系统上,比如Unix、Solaris、Red-Hat Linux、CentOS和Ubuntu等。
  7. ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序)
  8. ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接,ssh sftp

3. TELNET

  1. Telnet是电信(Telecommunications)和网络(Networks)的联合缩写,这是一种在UNIX平台上最为人所熟知的网络协议。
  2. Telnet使用端口23,它是专门为局域网设计的。
  3. Telnet不是一种安全通信协议,因为它并不使用任何安全机制,通过网络/互联网传输明文格式的数据,包括密码,所以谁都能嗅探数据包,获得这个重要信息。
  4. Telnet中没有使用任何验证策略及数据加密方法,因而带来了巨大的安全威胁,这就是为什么telnet不再用于通过公共网络访问网络设备和服务器。

4. 如何实现加密

4.1 SSH算法

SSH为了确保信息的安全传输,从连接发起到完成各阶段的各个点SSH协议采用了许多不同类型的数据加密技术,包括可逆的对称加密,非对称加密以及不可逆的哈希散列。

4.2 SSL
  • Secure Socket Layer,为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape浏览器即可支持SSL。
  • 当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
  • SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
  • SSL提供服务
  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器
  2. 加密数据以防止数据中途被窃取
  3. 维护数据的完整性,确保数据在传输过程中不被改变
4.3加密技术
  • 非对称密钥加密系统----共享密钥加密(对称密钥加密):加密和解密同用一个密钥。加密时就必须将密钥传送给对方,那么如何安全的传输呢?
    核心是:加密类型
  • 对称密钥加密-----公开密钥加密(非对称密钥加密):公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。使用此加密方式,发送密文的一方使用公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听盗走
    核心是:算法
  • 区别:
  1. 非对称加密与对称加密的不同之处在于,为了在单个方向上发送数据,需要两个相关的一组密钥。其中一个密钥称为私钥,而另一个称为公钥。
  2. 非对称加解密的效率要远远小于对称加解密
  3. 非对称秘钥相比对称秘钥更加安全
4.3.1非对称加密
  • 非对称加密中是用最广泛RSA算法就用到了利用大素数方便生成大整数(2048),但是该大素数则几乎无法分解的特性。最近热门的阿蒂亚老教授宣布证明《黎曼猜想》,就是用关于大素数分布的规律,如果该证明有效,能发现大素数的分布规律,则可能会影响大素数分解,读广泛使用的RSA算法可能产生影响。
  • 有意思的是RSA算法曾暴露过一丑闻,数学家们发现,算法中曾经使用的一个随机函数DUAL_EC_DRBG被NSA做了手脚,植入了后门,可以过这个这个算法来推算密钥。NSA利用该算法监控和窃取一些加密信息。
  • 我们知道密钥对中的私钥唯一用来解密消息的密钥,所以私钥要绝对保密,不能泄露给任何人。实践中除了保证私钥的存放外,SSH中用来进行系统认证的私钥虫虫建议应该对其设置密码,防止万一泄露,没有密码别人也用不了。如果是系统之间做自动程序和访问git操作的密钥,为了方便可以不设置密码。
  • SSH协议中还用到了加密散列。哈希散列算法是一种不可逆算法,除非你知道原始值生成散列对比,否则你永远无法通过散列算出原始值(但是可以通过哈希碰撞,就是利用可能字串或者构造彩虹表大量生成哈希进行对比,目前MD5和SSA1已经不再绝对安全)。散列算法常用于创建信息 "签名"或生成一组信息摘要,用来保证信息传输过程中没有被人认为篡改。因为对数据的任何修改都会导致其哈希完全不一致。
  • OPENSSH服务_第1张图片
4.3.2CA
  • 这里就有一个问题,如何证明非对称密钥本身是货真价实的公开密钥。如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输过程中,真正的公开密钥已经被攻击者替换掉了。这个时候就需要第三方公证单位来帮忙啦。
  • CA就是一个公认的公证单位,你可以自行产生一把密钥且制作出必要的证书数据并向CA单位注册,那么当客户端的浏览器在浏览时,该浏览器会主动向CA单位确认该证书是否为合法注册过,如果是,那么该次连接才会建立,如果不是,浏览器会发出警告信息,告知用户应避免建立连接。所以说,如此一来WWW服务器不但有公证单位的证书,用户在建立连接时也比较有保障。
  • 接收到证书的客户端可以使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可以明确两件事
  1. 认证服务器的公开密钥的是真实有效的数字证书认证机构CA。
  2. 服务器的公开密钥是值得信赖的。
  • 此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。
  1. 服务器把自己的公开密钥登录至数字证书认证机构。
  2. 数字证书认证机构用自己的私有密钥向服务器的公开密钥署数字签名并颁发公钥证书。
  3. 客户端拿到服务器的公钥证书后,使用数字签名认证机构的公开密钥,向数字证书认证机构验证公钥证书上的数字签名,以确认服务器的公开密钥的真实性。
  4. 使用服务器的公开密钥对报文加密后发送。
  5. 服务器用私有密钥对报文解密。

CA:

  • CA(Certificate Authority,证书颁发机构)
  • CA的核心功能是颁发和管理数字证书

CA的作用

  • 处理证书申请
  • 鉴定申请者是否有资格接收证书
  • 证书的发放
  • 证书的更新
  • 接收最终用户数字证书的查询、撤销
  • 产生和发布证书吊销列表(CRL)
  • 数字证书的归档
  • 密钥归档
  • 历史数据归
4.3.3密钥技术证书作用

什么是证书?

  • 证书用于保证密钥的合法性
  • 证书把公钥与拥有对应私钥的主体标识信息捆绑在一起
  • 证书的主体可以是用户、计算机、服务等
  • 证书格式遵循X.509标准
  • X.509是由国际电信联盟制定的数字证书标准
  • 使用者的公钥值
  • 使用者标识信息(如名称和电子邮件地址)
  • 有效期(证书的有效时间)
  • 颁发者标识信息
  • 颁发者的数字签名

证书可以应用于

  • Web服务器身份验证
  • Web用户身份验证
  • 安全电子邮件
  • Internet协议安全(IPSec)
  • 数字证书由权威公正的第三方机构即CA签发

证书发放过程

OPENSSH服务_第2张图片
OPENSSH服务_第3张图片

4.3.4PFX

公钥加密技术12号标准(Public Key Cryptography Standards #12,PKCS#12)为存储和传输用户或服务器私钥、公钥和证书指定了一个可移植的格式。它是一种二进制格式,这些文件也称为PFX文件。
CER: 用于存储公钥证书的文件格式
RSA:算法是一种非对称密码算法
PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。

PKI体系能够实现的功能有

  • 身份认证
  • 数据完整性
  • 数据机密性
  • 操作的不可否认性

5. ssh两种验证级别

从客户端来看,SSH提供两种级别的安全验证。

  1. 第一种级别(基于口令的安全验证)
    只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

  2. 第二种级别(基于密匙的安全验证)
    需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
    OPENSSH服务_第4张图片
    OPENSSH服务_第5张图片
    用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
    第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒 [2] 。

6. 解读SSH服务配置信息

ssh默认配置文件
1.#Port 22                                          监听端口,默认监听22端口   【默认可修改】
 2.#AddressFamily any                        IPV4和IPV6协议家族用哪个,any表示二者均有
 3.#ListenAddress 0.0.0.0                   指明监控的地址,0.0.0.0表示本机的所有地址  【默认可修改】
 4.#ListenAddress ::                            指明监听的IPV6的所有地址格式
 5.# The default requires explicit activation of protocol 1   
 6.#Protocol 2                                      使用SSH第二版本,centos7默认第一版本已拒绝
 7.# HostKey for protocol version 1      一版的SSH支持以下一种秘钥形式
 8.#HostKey /etc/ssh/ssh_host_key
 9.# HostKeys for protocol version 2                  使用第二版本发送秘钥,支持以下四种秘钥认证的存放位置:(centos6只支持rsa和dsa两种)
 10.HostKey /etc/ssh/ssh_host_rsa_key               rsa私钥认证 【默认】
 11.#HostKey /etc/ssh/ssh_host_dsa_key            dsa私钥认证
 12.HostKey /etc/ssh/ssh_host_ecdsa_key          ecdsa私钥认证
 13.HostKey /etc/ssh/ssh_host_ed25519_key      ed25519私钥认证
 14.# Lifetime and size of ephemeral version 1 server key
 15.#KeyRegenerationInterval 1h
 16.#ServerKeyBits 1024        主机秘钥长度        
 17.# Ciphers and keying      
 18.#RekeyLimit default none
 19.# Logging
 20.# obsoletes QuietMode and FascistLogging
 21.#SyslogFacility AUTH
 22.SyslogFacility AUTHPRIV                   当有人使用ssh登录系统的时候,SSH会记录信息,信息保存在/var/log/secure里面
 23.#LogLevel INFO                                  日志的等级
 24.# Authentication:
 25.#LoginGraceTime 2m                           登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
 26.#PermitRootLogin no
 27.PermitRootLogin yes                            是否允许管理员直接登录,'yes'表示允许
 28.#StrictModes yes                                 是否让sshd去检查用户主目录或相关文件的权限数据
 29.#MaxAuthTries 6                                  最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
 30.#MaxSessions 10                                 允许的最大会话数
 31.#RSAAuthentication yes
 32.#PubkeyAuthentication yes
 33.# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
 34.# but this is overridden so installations will only check .ssh/authorized_keys
 35.AuthorizedKeysFile .ssh/authorized_keys                 服务器生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面,将公钥发给客户端
 36.#AuthorizedPrincipalsFile none 
 37.#AuthorizedKeysCommand none
 38.#AuthorizedKeysCommandUser nobody
 39.# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
 40.#RhostsRSAAuthentication no
 41.# similar for protocol version 2
 42.#HostbasedAuthentication no
 43.# Change to yes if you don't trust ~/.ssh/known_hosts for
 44.# RhostsRSAAuthentication and HostbasedAuthentication
 45.#IgnoreUserKnownHosts no
 46.# Don't read the user's ~/.rhosts and ~/.shosts files
 47.#IgnoreRhosts yes
 48.# To disable tunneled clear text passwords, change to no here!
 49.#PasswordAuthentication yes
 50.#PermitEmptyPasswords no
 51.PasswordAuthentication yes                    是否允许支持基于口令的认证
 52.# Change to no to disable s/key passwords
 53.#ChallengeResponseAuthentication yes
 54.ChallengeResponseAuthentication no     是否允许任何的密码认证
 55.# Kerberos options                                   是否支持kerberos(基于第三方的认证,如LDAP)认证的方式,默认为no 
 56.#KerberosAuthentication no
 57.#KerberosOrLocalPasswd yes
 58.#KerberosTicketCleanup yes
 59.#KerberosGetAFSToken no
 60.#KerberosUseKuserok yes
 61.# GSSAPI options                                       
 62.GSSAPIAuthentication yes
 63.GSSAPICleanupCredentials no
 64.#GSSAPIStrictAcceptorCheck yes
 65.#GSSAPIKeyExchange no
 66.#GSSAPIEnablek5users no
 67.# Set this to 'yes' to enable PAM authentication, account processing,
 68.# and session processing. If this is enabled, PAM authentication will
 69.# be allowed through the ChallengeResponseAuthentication and
 70.# PasswordAuthentication. Depending on your PAM configuration,
 71.# PAM authentication via ChallengeResponseAuthentication may bypass
 72.# the setting of "PermitRootLogin without-password".
 73.# If you just want the PAM account and session checks to run without
 74.# PAM authentication, then enable this but set PasswordAuthentication
 75.# and ChallengeResponseAuthentication to 'no'.
 76.# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
 77.# problems.
 78.UsePAM yes
 79.#AllowAgentForwarding yes
 80.#AllowTcpForwarding yes
 81.#GatewayPorts no
 82.X11Forwarding yes                   
  #ssh -X  user@IP
 83.#X11DisplayOffset 10
 84.#X11UseLocalhost yes 
 85.#PermitTTY yes
 86.#PrintMotd yes
 87.#PrintLastLog yes
 88.#TCPKeepAlive yes
 89.#UseLogin no
 90.UsePrivilegeSeparation sandbox # Default for new installations.
 91.#PermitUserEnvironment no
 92.#Compression delayed
 93.#ClientAliveInterval 0
 94.#ClientAliveCountMax 3
 95.#ShowPatchLevel no
 96.#UseDNS yes              是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
 97.#PidFile /var/run/sshd.pid
 98.#MaxStartups 10:30:100
 99.#PermitTunnel no
 100.#ChrootDirectory none
 101.#VersionAddendum none
 102.# no default banner path
 103.#Banner none
 104.# Accept locale-related environment variables
 105.AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
 106.AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
 107.AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
 108.AcceptEnv XMODIFIERS
 109.# override default of no subsystems
 110.Subsystem sftp /usr/libexec/openssh/sftp-server                    支持 SFTP ,如果注释掉,则不支持sftp连接
 111.# Example of overriding settings on a per-user basis
 112.#Match User anoncvs
 113.# X11Forwarding no
 114.# AllowTcpForwarding no
 115.# PermitTTY no
 116.# ForceCommand cvs server
 117.AllowUsers user1 user2                登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录 

7.ssh特点

  • ssh服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序)
  • ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接

8.SSH的工作机制

服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。

9.SSH的加密技术

加密技术:传输过程,数据加密。

  1. SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码
  2. SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。
    SSH2支持RSA和DSA密钥
    DSA:digital signature Algorithm 数字签名
    RSA:既可以数字签名又可以加密

10.SSH功能特点

  1. SSH是安全的加密协议,用于远程连接Linux服务器
  2. SSH的默认端口是22,安全协议版本是SSH2
  3. SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器
  4. SSH客户端包含ssh连接命令和远程拷贝scp命令等

11.ssh命令使用

客户端 ssh

  1. 登录:
        ssh  172.24.8.131
      ssh [email protected]
      ssh -p 22 [email protected]               

2.直接执行命令 -->最好全路径

    ssh [email protected]  ls -l  /mnt                       
         ==>ssh [email protected] /bin/ls -ltr /backup/data               

3.查看已知主机

     cat /root/.ssh/known_hosts

ssh自带的sftp功能

  • Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。
    windows中可以使用Core FTP,FileZilla, WinSCP,Xftp来连接SFTP进行上传,下载文件,建立,删除目录等操作。
  1. Window和Linux的传输工具
    wincp filezip
    sftp -->基于ssh的安全加密传输
  2. sftp客户端连接
sftp -oPort=22 [email protected]                   
put /etc/hosts /tmp                   
get /etc/hosts /home/omd   
  1. sftp小结:
1.linux下使用命令: sftp -oPort=22 [email protected]                   
2.put加客户端本地路径上传                  
3.get下载服务器端内容到本地                   
4.远程连接默认连接用户的家目录

12.客户端scp 跨机远程拷贝

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。两台主机之间复制文件必需得同时有两台主机的复制执行帐号和操作权限。

scp一般用法

  1. 本地复制远程文件:(把远程的文件复制到本地)

scp [email protected]:/val/test/test.tar.gz /val/test/test.tar.gz

  1. 远程复制本地文件:(把本地的文件复制到远程主机上)

scp /val/test.tar.gz [email protected]:/val/test.tar.gz

  1. 本地复制远程目录:(把远程的目录复制到本地)

scp -r [email protected]:/val/test/ /val/test/

  1. 远程复制本地目录:(把本地的目录复制到远程主机上)

scp -r ./ubuntu_env/ [email protected]:/home/pipi

13.#### 案例

  1. 修改ssh服务端口号
    OPENSSH服务_第6张图片
  2. 拒绝root用户远程登录
    #请保持服务器上至少有一个可以远程登陆的普通远程账号
    #修改配置文件如下:
    #打开该选项并修改参数为no
    PermitRootLogin no
    #重启服务后生效,使用时使用普通用户进行登陆,需要使用root用户时再切换
    OPENSSH服务_第7张图片
  3. 允许特定用户ssh登录,其他用户都无法登录
    #编辑配置文件,在最后添加如下内容:
    AllowUsers USERNAME
    USERNAME为你允许登陆的账号,如果是多个用户,中间用空格隔开
    #重启ssh服务后生效
    在这里插入图片描述

附加

添加防火墙允许策略
[root@web ~]# firewall-cmd --permanent --add-port=2222/tcp
success
[root@web ~]# firewall-cmd --reload
#添加自定义端口到服务
[root@web ~]# semanage port -a -t ssh_port_t -p tcp 2222
注意:如果执行该命令时出现以下提示,请换个端口再试:
ValueError: Port tcp/4444 already defined

13.ssh免密设置

  • ssh建立连接的完整过程
    OPENSSH服务_第8张图片
    OPENSSH服务_第9张图片
    SSH数据传输时候基本上所有过程都是使用对
    密钥来加密。只有在刚开始创建连接阶段和身份认证握手阶段才使用非对称加密。
13.1例一.虚拟和虚拟机之间实现ssh 互信,免登陆
  1. #创建秘钥对
    ssh-keygen - 生成、管理和转换认证密钥 -t制定类型 RSA

OPENSSH服务_第10张图片
#证书的目录

私钥/root/.ssh/id_rsa
公钥/root/.ssh/id_rsa.pub
OPENSSH服务_第11张图片
制该公钥文件到对端的该目录下:
1)[root@web ~]# scp /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
在本地服务器上登陆对端服务器
[root@web ~]# ssh 192.168.8.138
在这里插入图片描述

2)ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
在本地服务器上登陆对端服务器
[root@web ~]# ssh 192.168.40.132

13.2例二. 通过xshell使用证书进行登陆

使用以下命令创建证书:
[root@web ~]# ssh-keygen -t rsa -b 4096
[root@web .ssh]# cp id_rsa.pub authorized_keys
#然后将私钥下载到本地系统,等下用
#如果sftp登陆的时候无法成功,请恢复之前修改的ssh服务配置
#在windows系统上使用xshell创建新会话,使用公钥进行免密登陆
#取消使用密码进行远程登陆
修改sshd_config配置文件
vi /etc/ssh/sshd_config
PubkeyAuthentication yes #启用公告密钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #设定PublicKey文件路径
RSAAuthentication yes #允许RSA密钥
PasswordAuthentication no #禁止密码验证登录,如果启用的话,RSA认证登录就没有意义了
#禁用root账户登录,非必要,但为了安全性,请配置
修改配置文件保存退出,重启服务

14.ssh排查问题

  1. 判断物理链路是否通 ping 192.168.25.130 | 是否同一个网的
    ping 本身是icmp协议
  2. 判断服务是否正常 systemctl status sshd
  3. Linux防火墙
    firewall-cmd --list-al
  4. 测试:
    ssh [email protected]

15.ssh章节小结

  1. ssh远程的加密连接协议,相关软件openssh,openssl
  2. 默认端口22
  3. ssh版本协议
  4. 服务器ssh连接,ftp连接,sshd守护进程,开机启动
  5. ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp,
  6. 安全验证方式:口令,密钥 学习原理
  7. ssh服务优化:改端口,改监听,no root,no empty,no DNS,
  8. ssh密钥对,公钥在服务器端,私钥在客户端
15.1如何防止SSH登录入侵
  1. 密钥登录,更改端口
  2. 监听本地内网IP(ListenAddress 192.168.25.*)

修改ssh服务的启动文件sshd的几个点

     修改 /etc/ssh/sshd_config
     UseDNS no  加快响应速度因为在内网环境下
     PermitRootLogin no  不运行root用户直接登录
     Port 11544 更改访问端口号
     ListenAddress  192.168.25.130  只监听内网的IP
     Allow User anoncvs     当前环境允许登录的用户
     PermitRootLogin no      是否允许root用户登录,一般不允许开

你可能感兴趣的:(Linux)