热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2.2SSH服务器与OpenSSH

SSH服务器配置SSH服务器配置文件etcsshsshd_config[root@CentOS7~]#catetcsshsshd_config#$OpenB

SSH服务器

配置SSH服务器配置文件 /etc/ssh/sshd_config

[root@CentOS7 ~]# cat /etc/ssh/sshd_config 
#	$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22   #默认监听端口,建议修改
#AddressFamily any  #支持IP协议,默认v4、v6都支持
#ListenAddress 0.0.0.0   #默认监听的IP地址,建议修改为内网地址
#ListenAddress ::

HostKey /etc/ssh/ssh_host_rsa_key   #密钥文件名
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging    #日志的配置,默认存放在/var/log/secure
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes   #是否允许root直接登陆,建议no
#StrictModes yes       #是否检查密钥文件的权限
#MaxAuthTries 6        #最大尝试登录次数,实际为二分之一
#MaxSessions 10        #相同会话最多同时连接次数

#PubkeyAuthentication yes   #是否允许基于Key验证连接

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile	.ssh/authorized_keys    #公钥文件存放路径

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes   #是否允许通过用户口令进行连接

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options
GSSAPIAuthentication no   #是否使用此类验证,建议no
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0   #客户端连接活动间隔,单位是秒
#ClientAliveCountMax 3   #客户端活动间隔探测次数,超出即断开连接
#ShowPatchLevel no
UseDNS no   #是否使用DNS反向解析,建议no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100    #支持最大的未验证连接数,10个未验证连接:超过后,断开30%未验证连接:超过100个时断开所有未验证连接
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none    #提示信息

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

# override default of no subsystems
Subsystem	sftp	/usr/libexec/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#	X11Forwarding no
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server

    添加 AllowUsers 用户... 可以限制远程主机允许通过那些用户登陆 ssh 服务器,不再此列表中的用户,远程主机皆不能访问包括 root 用户
    添加 DenyUsers 用户... 可以限制远程主机不能通过那些用户登陆 ssh 服务器。

当一个用户同时出现在 AllowUsers 与 DenyUsers 列表中时,ssh 会拒绝远程主机通过此用户访问 ssh 服务器。


    sftp命令类似与传统的 ftp 工具,但是在链接基于在 SSH 协议,可以安全的传输数据。

[root@CentOS6 ~]# sftp root@192.168.30.74   #sftp是交互式命令
Connecting to 192.168.30.74...
sftp> ls
11                     Desktop                Documents              Downloads              Music                  Pictures               Public                 Templates              
Videos                 aa                     anaconda-ks.cfg        app                    bin                    initial-setup-ks.cfg   user.txt               useradd                
sftp> pwd
Remote working directory: /root
sftp> get /etc/fstab /data
Fetching /etc/fstab to /data/fstab
/etc/fstab                                                                                                                                                 100%  595     0.6KB/s   00:00    
sftp> exit

pssh工具

    pssh命令用于在多台主机上通过 SSH 连接并发执行命令。

    语法:pssh 目标主机 [选项] 动作

[root@CentOS6 ~]# pssh -H 192.168.30.74 -H 192.168.30.75 -A -i pwd
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 13:50:51 [SUCCESS] 192.168.30.74
/root
[2] 13:50:57 [SUCCESS] 192.168.30.75
/root
[root@CentOS6 ~]# pssh -H 192.168.30.74 -H 192.168.30.75 -i pwd
[1] 13:52:55 [SUCCESS] 192.168.30.74
/root
[2] 13:52:56 [SUCCESS] 192.168.30.75
/root

    选项

-h:主机文件列表,内容格式每行为”[user@]host[:port]
-H:主机字符串
-l:登录使用的用户名
-p:并发的线程数
-o:输出的文件目录,输出时会覆盖原文件内容
-e:错误输入文件
-t:TIMEOUT 超时时间设置,0无限制
-O:SSH的选项
-v:详细模式
-A:手动输入密码模式,不使用 -A 选项需要两台主机已完成基于Key验证
-x:额外的命令行参数使用空白符号,引号,反斜线处理
-X:额外的命令行参数,单个参数模式,同-x
-i:每个服务器内部处理信息输出
-P:打印出服务器返回信息

[root@CentOS7 err.log]#⮀ssh root@192.168.30.74 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@CentOS7 err.log]#⮀ssh root@192.168.30.75 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@CentOS7 err.log]#⮀ssh root@192.168.30.69 'echo $PATH'
/app/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

由此可见,在当需要执行的命令或者脚本不再上述 PATH变量 中,则需要使用绝对路径

    pscp.pssh命令用于向多台主机推送文件。

    语法:pscp.pssh 目标主机 [选项] 本地文件 远程目录

[root@CentOS7 data]# pscp.pssh -H 192.168.30.75 -H 192.168.30.69 host.sh /root/bin
[1] 14:32:29 [SUCCESS] 192.168.30.69
[2] 14:32:30 [SUCCESS] 192.168.30.75

    选项:与 pssh 差别不大,多了 -r 递归复制

-r:递归复制
-h:主机文件列表,内容格式每行为”[user@]host[:port]”
-H:主机字符串
-O:SSH的选项
-o:输出的文件目录,输出时会覆盖原文件内容
-e:错误输入文件
-t:TIMEOUT 超时时间设置,0无限制
-x:额外的命令行参数使用空白符号,引号,反斜线处理
-X:额外的命令行参数,单个参数模式,同-x

    pslurp命令用于从多台主机拉取文件。

    语法:pslurp.pssh 目标主机 [选项] -L 本地目录 远程文件 [输出文件名]

[root@CentOS7 err.log]#⮀pslurp -H root@192.168.30.75 -H 192.168.30.69 -L /data/ /var/log/messages maa
[1] 16:02:27 [SUCCESS] 192.168.30.69
[2] 16:02:28 [SUCCESS] root@192.168.30.75

SSH端口转发

    搭建实验环境

1、创建iptables,拒绝 192.168.30.69 连接 192.168.30.75

[root@CentOS7 ~]# iptables -A INPUT -s 192.168.30.69 -j REJECT
[root@CentOS7 ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 92 packets, 15050 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       192.168.30.69        0.0.0.0/0            reject-with icmp-port-unreachable

2、启用 192.168.30.75 上的 telnet 服务端口

[root@CentOS7 ~]# systemctl status telnet.socket 
● telnet.socket - Telnet Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/telnet.socket; disabled; vendor preset: disabled)
   Active: active (listening) since Fri 2018-05-25 00:19:27 CST; 8min ago
     Docs: man:telnetd(8)
   Listen: [::]:23 (Stream)
 Accepted: 0; Connected: 0

May 25 00:19:27 CentOS7.Miriam systemd[1]: Listening on Telnet Server Activation Socket.
May 25 00:19:27 CentOS7.Miriam systemd[1]: Starting Telnet Server Activation Socket.

    本地端口转发

本地主机是192.168.30.69

    语法:ssh -L 本地端口:目标主机地址:目标端口 SSH服务器地址

[root@CentOS6 ~]# ssh -L 1024:192.168.30.75:23 192.168.30.74   #建立192.168.30.69与192.168.30.74的ssh端口转发连接
Last login: Thu May 24 13:51:17 2018 from 192.168.30.69
[root@CentOS7 ~]#  
[root@CentOS6 ~]# telnet 127.0.0.1 1024   #使用本地1024端口连接telnet服务
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Kernel 3.10.0-862.el7.x86_64 on an x86_64
CentOS7 login: jiangbowen
Password: 
[jiangbowen@CentOS7 ~]$   #连接成功
[root@CentOS7 ~]# ss -nt   #查看192.168.30.74的端口状态
State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              
ESTAB       0      0                                                      192.168.30.74:22                                                                 192.168.30.69:55416              
ESTAB       0      0                                                      192.168.30.74:54308                                                              192.168.30.75:23                 
ESTAB       0      52                                                     192.168.30.74:22                                                                  192.168.30.1:1799        

    选项

-f 后台启用
-N 不打开远程shell,处于等待状态
-g 启用网关功能

转发过程:data<->localhost:1024<->localhost:XXXXX<->sshsrv:22 <->sshsrv:YYYYY<->telnetsrv:23

    远程端口转发

本地主机是192.168.30.74

    语法:ssh -R 远程端口:目标主机地址:目标端口 SSH服务器地址

[root@CentOS7 ~]# ssh -R 1024:192.168.30.75:23 192.168.30.69   #建立192.168.30.74与192.168.30.69的ssh端口转发连接
Last login: Thu May 24 17:14:38 2018 from 192.168.30.74
[root@CentOS6 ~]#
[root@CentOS6 ~]# ss -nt    #192.168.30.69上的端口状态
State       Recv-Q Send-Q                                                              Local Address:Port                                                                Peer Address:Port 
ESTAB       0      0                                                                   192.168.30.69:22                                                                  192.168.30.1:1796  
ESTAB       0      0                                                                   192.168.30.69:22                                                                 192.168.30.74:50658 
[root@CentOS6 ~]# ss -ntl   #本地1024端口已经处于监听状态
State       Recv-Q Send-Q                                                              Local Address:Port                                                                Peer Address:Port 
LISTEN      0      128                                                                     127.0.0.1:1024                                                                           *:*     
LISTEN      0      128                                                                           ::1:1024                                                                          :::*     
LISTEN      0      128                                                                            :::33959                                                                         :::*     
LISTEN      0      128                                                                            :::111                                                                           :::*     
LISTEN      0      128                                                                             *:111                                                                            *:*     
LISTEN      0      128                                                                            :::22                                                                            :::*     
LISTEN      0      128                                                                             *:22                                                                             *:*     
LISTEN      0      128                                                                     127.0.0.1:631                                                                            *:*     
LISTEN      0      128                                                                           ::1:631                                                                           :::*     
LISTEN      0      100                                                                           ::1:25                                                                            :::*     
LISTEN      0      100                                                                     127.0.0.1:25                                                                             *:*     
LISTEN      0      128                                                                             *:44351                                                                          *:*     
[root@CentOS6 ~]# telnet 127.0.0.1 1024   #使用telney访问本地的1024端口
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Kernel 3.10.0-862.el7.x86_64 on an x86_64
CentOS7 login: jiangbowen
Password: 
Last login: Fri May 25 00:54:56 from ::ffff:192.168.30.74
[jiangbowen@CentOS7 ~]$    #连接成功

转发过程:data<->sshsrv:1024<->sshsrv:22<->localhost:XXXXX<->localhost:YYYYY<->telnetsrv:23




推荐阅读
  • PatchODAX8: ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • pc电脑如何投屏到电视?DLNA主要步骤通过DLNA连接,使用WindowsMediaPlayer的流媒体播放举例:电脑和电视机都是连接的 ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在&quot;Debian上安装Docker&quot;,其他平台在&quot;这里查 ... [详细]
  • 1.dd命令dd命令的全称为diskdump,对系统所有用户开放。该命令用于复制磁盘的数据块,且可在复制文件的同时指定转换的文件格式。命令选项参数说明ifFILE:输入文件名称,默 ... [详细]
  • 开发板:FL2440内核:linux3.0无线网卡:RT3070RT3070的工作模式分为STA(station)模式、SoftAP(AccessPoint)模式两种。STA ... [详细]
author-avatar
ck凯悦风_855
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有