精华内容
下载资源
问答
  • 2022-03-18 18:11:19

    ssh协议和tcp/ip 协议一样非常的重要,那么,如何使用这个ssh呢?这个协议到底有什么用处呢?

    一,

    ssh协议是什么

    ssh是secure SHell的简写,意思为安全的shell,中文也叫安全的外壳协议(是不是比较喜感的一个名称?),那,既然都是shell了,自然是有shell的那些特征啦。

    SSH 主要由三部分组成:

    传输层协议 [SSH-TRANS]

    提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。

    用户认证协议 [SSH-USERAUTH]

    用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。

    连接协议 [SSH-CONNECT]

    将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。

    ssh的最主要的作用就是可以远程登陆服务器,使得距离不能成为我们的物理限制。

    二,

    ssh的实际应用

    ssh在很多运维工具中都使用到了,比如,常用的xshell,secure CRT, 这些运维工具都是通过ssh协议来远程登陆服务器的哦。

    ssh还有跳转登陆服务器的功能,在集群的内部经常会使用ssh登陆其它的服务器。

    ssh还可以应用在脚本内,使得管理大批量的服务器并完成一些简单的自动化工作成为可能。但,ssh通常是点对点的登陆,因此,Apache开发出了基于Python的ansible 以及其它组织开发的saltstrack等等大批量自动化运维工具。

    三,

    ssh免密登陆的配置

    (1) 通常的带密码验证的ssh登陆

    端口问题:

    这里需要提醒各位,ssh默认的端口是22,但,默认的端口并不是非常安全的,因此,在实际的生产活动中通常是会更改sshd服务的端口,也就是默认端口更改为自定义的端口了。

    通常我们要ssh远程登陆一个服务器,命令是这样的:

    ssh 192.168.0.16
    执行命令后,会要求输入192.168.0.16服务器上的root用户的密码进行验证
    如果输入正确,就登陆192.168.0.16这个服务器啦。
    

    那么,上面的写法是省略了很多东西的,其实完整的ssh命令是如下的:

    ssh -p 22 root@192.168.0.16
    ssh -p 22 zsk@192.168.0.16
    
    
    这个命令要说明的是,如果sshd服务是使用的默认端口,-p 22 可以省略
    如果是想要远程登陆后,就是root用户,那么就在ip前加root@
    如果是想要远程登陆后,是普通用户,那么就在ip前加普通用户名@
    第二条命令就是需要验证普通用户zsk的密码啦。
    

    当我们回车后,将会要求输入目标主机的用户和密码进行验证,比如上面这条命令是要求验证 192.168.0.16这个远程主机的root用户的密码,如果密码错误,将会要求重新输入,直到三次密码输入错误,关闭ssh连接。

    (2)

    sshd服务端口自定义更改

    vim /etc/ssh/sshd_config
    找到以下内容:
    # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
    #
    Port 2233
    
    将port前的注释去掉,后面的数字写一个自己喜欢的65525以内的未被占用的数字即可。然后保存该文件。
    重启sshd服务,重启命令为:
    systemctl restart sshd
    命令执行完毕后,别的服务器要ssh这台服务器就必须是下面这个命令了:
    ssh -p 2233 192.168.0.16
    

    (3)

    前面都是一些基础的科普知识,现在开始免密配置啦。(假设,是两个服务器之间的免密,192.168.0.16和192.168.0.17,都是配置root用户的免密哦,sshd服务端口都已更改为2233啦)

    1. 在192.168.0.17执行ssh-keygen -t rsa ,然后一路回车
    2. 在192.168.0.17****执行 ssh-copy-id -p 2233 root@192.168.0.16 输入16的正确的root密码验证。这个是远程ssh免密
    3. 在192.168.0.17执行 ssh-copy-id -p 2233 root@192.168.0.17 输入本机17的正确的root密码进行验证。这个是本地ssh免密
    4. 在192.168.0.16服务器上重复上面的三步,只是密码验证的分别是本地密码和远程密码而已啦。

    (4)

    免密的原理揭示:

    [root@master ~]# 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_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    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:
    SHA256:DoLRfKE6PzfnFviMYbTGcfdjjCnOAVYDnIQjINzVB28 root@master
    The key's randomart image is:
    +---[RSA 2048]----+
    |+.. .==+.        |
    |...+o.oo+.       |
    |  ..+....E       |
    |   + .= o .      |
    |  + .+.*S. =     |
    |   o .Bo+ o =    |
    |    oooBo+ . .   |
    |     o.+*        |
    |       ..        |
    +----[SHA256]-----+
    

    以上需要注意,在提示输入密码的时候一定要回车,不要输入密码。也就是在提示Enter passphrase (empty for no passphrase)的时候回车,然后在下一个提示仍然回车,不要输入任何密码。

    ssh-keygen 这个命令会在/root/.ssh/目录下生成两个文件,一个是公钥 id_rsa.pub 一个是私钥 id_rsa。

    这里要说一个ssh的小秘密了,我们查看私钥,会发现即使我们在每个服务器生成的时候没有输入密码,也就是空密码,私钥的内容都是不一样的。当然,公钥的内容也是不一样的,因此,不用纠结啦,即使生成公私钥的时候是空密码,仍然是十分的安全啦。

    ssh-copy-id 这个命令是将a服务器的公钥传递到b服务器内,这个我们查看免密配置后生成的authorized_keys就可以看到了。该文件的路径和公私钥是在一个目录下的哦。

    [root@master ~]# cat ~/.ssh/authorized_keys 
    ssh-rsa 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvRg61Q+wReTj/8zAykY51SuTWI3Agptsq0KNtNjHlK/JyNvcTmyMQxLeEFldJEC35/psDsuv2/shFM38zn2BYm8XSVgQITnpuNXIqq5R6lMhLWIO9ehfkuuGKakk91n9szrlbkpCWJeLDPCc8qE8esmEX4xedpk913fOtXa6AuTzZV07XfMmWJXYtco9F12rybjA0hhdku/vMvVRfLnlI6/uPeC7dLI1KuG4UfTGaEAD+rkO/3Ti4W2f44YPB36h2LlnqvC/oprW9mNLNkRoMLDktWjEI+TXqUfNr4OjSaph12KuVLxWmG/Sd6WQjo57wW5Px4RIh47PV//p2e32T root@slave1
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6AWczH2EgetzltgPaqtU5lDVR/vPrKPlOSmiAx1gi14r0QviZ/fFrt1RDx7x7ptbPBpJqPLbLck2PBIEc8s56fVUsLNCo26Qny+0/WsmFcRfx5sC09teRLuK74kHX3XrbD8TxCndGVWWhgQk8ACIOHswr47FrZFK6l0wPQFOlVSnqmZJ2z7wdhOIZVDb0dyOkdISqNaN4Q9C/9sqdbOwGnD8ryLaXSUmLYf1epiBJ2/0cheua3DXBQW4WoR2pDUXJoBWGTTUPPd+UHIvdRRmp0nqmc9VJqDQ5OkQs2R43ag67lwD62gPmNnh7hDb+bWOjGrr1xg2ui8Puz04C093f root@master
    

    可以看到,两个服务器的公钥内容合并到这个文件内了。

    (5)免密登陆的取消

    这个就非常简单了,只是注意别删除错了就可以啦

    ???????rm -rf ~/.ssh/*
    

    把前面 ssh-keygen 等等命令生成的文件删除就可以啦,非常的简单。

    更多相关内容
  • SSH框架搭建源码

    热门讨论 2015-10-19 21:46:09
    里面是SSH框架搭建登录的demo,清楚的描述了SSH框架搭建过程的各种配置,另附博客地址:http://blog.csdn.net/u010539352
  • SSH Secure Shell Client 3.2.9

    千次下载 热门讨论 2014-02-13 11:09:28
    SSH是一个用来替代TELNET、FTP以及R命令的工具包,主要是想解决口令在网上明文传输的问题。为了系统安全和用户自身的权益,推广SSH是必要的。SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working ...
  • SSH网上商城项目实战完整源码(带博文可参考)

    千次下载 热门讨论 2016-05-26 20:56:31
    该资源包含了完整的项目开发:前端代码,后端实现,完成了后台管理功能,前台显示功能,完成了购物车,完成了支付功能,完成了邮件的发送,短信的发送功能,完成了后台查看销售报表的功能等,比较齐全,是个学习的好...
  • SSH2框架搭建实例源码

    万次下载 热门讨论 2013-04-25 09:53:29
    SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)全部采用最新版本.演示了用户登录和用户管理
  • 随着struts的安全问题的暴露,原由Struts2+spring+hibernate构成的SSH2已经被越来越多的开发者所弃用,反而,由Spring+SpringMVC+Hibernate构成的SSH框架越来越受欢迎!这里提供了一个案例代码,希望对大家搭建环境...
  • SSH三大框架经典入门教程【PDF清晰版】

    千次下载 热门讨论 2013-03-02 09:17:14
    本教程共有4章,以非常通俗易懂的方式,向我们介绍Struts、Spring、Hibernate三大现在比较流行的JAVA_WEB开发框架,非常适合刚刚接触的朋友快速入门。 chap01 领略清晰的MVC流程----...chap04 SSH互整合技术资料.pdf
  • Ubuntu14.04离线安装ssh所需安装包deb

    千次下载 热门讨论 2015-07-29 12:04:10
    1.按以下顺序执行安装 sudo dpkg -i openssh-client_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i openssh-sftp-server_6.6p1-2ubuntu1_amd64.deb sudo dpkg -i libck-...若未启动,尝试以下命令:/etc/init.d/ssh start
  • SSH是什么

    千次阅读 2022-02-25 14:11:26
    1 什么是 ssh?有什么用? (1)ssh 是一种协议 SSH(Secure Shell) 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。 (2)ssh 服务 ...

    1 什么是 ssh?有什么用?

     

    (1)ssh 是一种协议

    SSH(Secure Shell) 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

    (2)ssh 服务

    Linux 一般作为服务器使用,我们通常使用 ssh 服务(指实现 SSH 协议的软件)远程登录到 Linux 服务器来管理维护系统。

    • OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。

    • OpenSSH 的服务端:sshd(Linux 服务器启动该服务)

    • OpenSSH 的客户端:ssh(客户端启动,通过它来访问服务端)

    2 ssh 基于密匙的安全验证过程是怎样的?

    需要创建一对密匙,把公用密匙放在服务器上。连接SSH服务器时,客户端向服务器发出请求,用你的放的公钥匙进行安全验证,服务器收到请求之后,先在该服务器上你的主目录下寻找你的公匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私匙解密。

    3 对称加密与非对称加密区别是什么?

    (1)对称加密

    加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。效率高,对称加密的一大缺点是密钥的管理与分配,在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。

    (2)非对称加密

    非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。目前最常用的非对称加密算法是RSA 算法。虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

    4 非对称加密 RSA 算法的作用

    (1)加密:公钥加密私钥解密

    主要用于将数据资料加密不被其他人非法获取,保证数据安全性。使用公钥将数据资料加密,只有私钥可以解密。即使密文在网络上被第三方获取由于没有私钥则无法解密,从而保证数据安全性。

    1. A 在自己电脑上生成 RSA 钥匙文件,一个私钥文件一个公钥文件,并将他的公钥传送给 B。

    2. 此时 B 要传送信息给 A,于是 B 用 A 的公钥加密他的消息,然后传送给A。(网络上传输的密文,没有 A 的私钥无法解密,其他人获取之后也没用)

    3. A 用他的私钥解密 B 的消息。

    (2)认证:私钥加密公钥解密

    主要用于身份验证,判断某个身份的真实性。使用私钥加密之后,用对应的公钥解密从而验证身份真实性。
    SSH 公钥登录则用的是第二种功能。

    5 如何生成 ssh 密钥对?

    • 运行完上面的命令会生成一对公私钥,默认保存在 ~/.ssh/ 下的 id_rsa,id_rsa.pub。

    • id_rsa 是私钥,id_rsa.pub 是公钥,私钥一定要妥善保管。

    • id_rsa 的权限必须是 600 , chmod 600 ~/.ssh/id_rsa。600 即(-rw------)只有所有者才有读和写的权限。

    6 ssh 配置 config 文件与快捷登陆

    (1)快捷登陆配置

    在 ~/.ssh/ 下可以自己定义一些快捷键登陆的配置,该配置在 ~/.ssh/config

    config 结构如下:

    Host kafka_broker_01                      #定义主机别名
    ServerAliveInterval 30
    HostName 122.22.222.102                   #主机ip
    Port 33033                                #ssh 端口
    User bila                                 #用户名
    IdentityFile /Users/bila/.ssh/id_rsa      #私钥
    ProxyCommand ssh w_x_bastion -C -W %h:%p  #设置跳板机
    

    (2) 登陆

    指定用户登录

    ssh bila@192.168.0.103
    

    指定端口号登录

    ssh ssh 192.168.0.103 -p 2022
    

    7 附录

    GitHub如何配置SSH
    Key https://blog.csdn.net/u013778905/article/details/83501204
    远程管理服务 SSH
    https://www.jianshu.com/p/d3412c5ebdaa

    8 小结

    啥是 SSH?SSH 的作用;对称加密、非对称加密的区别和作用;ssh 密钥对生成,以及 ssh 配置快捷登陆。

     

     

    展开全文
  • 一:SSH配置文件相关参数详细说明 1)SSH客户端配置文件 [root@controller ~]# vi /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $ # This is the sshd server system-wide ...

    一:SSH配置文件相关参数详细说明

    1)SSH客户端配置文件

    [root@controller ~]# vi /etc/ssh/sshd_config 
    #       $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm 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
    #ListenAddress 0.0.0.0
    #ListenAddress ::
    
    # The default requires explicit activation of protocol 1
    #Protocol 2
    
    # HostKey for protocol version 1
    #HostKey /etc/ssh/ssh_host_key
    # HostKeys for protocol version 2
    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
    
    # Lifetime and size of ephemeral version 1 server key
    #KeyRegenerationInterval 1h
    #ServerKeyBits 1024
    
    # Ciphers and keying
    #RekeyLimit default none
    #ServerKeyBits 1024
    
    # Ciphers and keying
    #RekeyLimit default none
    
    # Logging
    # obsoletes QuietMode and FascistLogging
    #SyslogFacility AUTH
    SyslogFacility AUTHPRIV
    #LogLevel INFO
    
    # Authentication:
    
    #LoginGraceTime 2m
    #PermitRootLogin yes
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
    
    #RSAAuthentication yes
    #PubkeyAuthentication yes
    
    # 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
    #RhostsRSAAuthentication no
    # similar for protocol version 2
    #HostbasedAuthentication no
    # Change to yes if you don't trust ~/.ssh/known_hosts for
    # RhostsRSAAuthentication and 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
    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          # Default for new installations.
    #PermitUserEnvironment no
    #Compression delayed
    #ClientAliveInterval 0
    #ClientAliveCountMax 3
    #ShowPatchLevel no
    UseDNS no
    #PidFile /var/run/sshd.pid
    #MaxStartups 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
    "/etc/ssh/sshd_config" 153L, 4358C
    
    /etc/ssh/ssh——config
    
    
    #配置文件概要
    
    
    Host *                                         #选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。
    
    ForwardAgent no                      #设置连接是否经过验证代理(如果存在)转发给远程计算机。
    
    ForwardX11 no                          #设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)
    
    RhostsAuthentication n            #设置是否使用基于rhosts的安全验证。
    
    RhostsRSAAuthentication no   #设置是否使用用RSA算法的基于rhosts的安全验证。
    
    RSAAuthentication yes             #设置是否使用RSA算法进行安全验证。
    
    PasswordAuthentication yes    #设置是否使用口令验证。
    
    FallBackToRsh no                     #设置如果用ssh连接出现错误是否自动使用rsh。
    
    UseRsh no                               #设置是否在这台计算机上使用“rlogin/rsh”。
    
    BatchMode no                        #如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。
    
    CheckHostIP yes                      #设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。
    
    StrictHostKeyChecking no      #如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。
    
    IdentityFile ~/.ssh/identity     #设置从哪个文件读取用户的RSA安全验证标识。
    
    Port 22                                    #设置连接到远程主机的端口。
    
    Cipher blowfish                      #设置加密用的密码。
    
    EscapeChar ~                         #设置escape字符。
    

    2)SSH服务端配置文件详解

    /etc/ssh/sshd_config
    #配置文件概要
    Port 22          # SSH 预设使用 22 这个 port,最好是用别的 port !
    
    Protocol 2,1  # 选择的 SSH 协议版本,可以是 1 也可以是 2 ,如果要同时支持两者,就必须要使用 2,1 这个分隔了!
    
    ListenAddress 0.0.0.0  
          
    #监听的主机适配卡!举个例子来说,如果您有两个 IP,分别是 192.168.0.100 及 192.168.2.20 ,那么只想要开放 192.168.0.100 时,
    
    #就可以写如同下面的样式:ListenAddress 192.168.0.100 只监听来自 192.168.0.100 这个 IP 的SSH联机。
    
    如果不使用设定的话,则预设所有接口均接受 SSH
    
    PidFile /var/run/sshd.pid  # 可以放置 SSHD 这个 PID 的档案!左列为默认值
    
    
    LoginGraceTime 600           # 当使用者连上 SSH server 之后,会出现输入密码的画面,在该画面中,在多久时间内没有成功连上 
    
    SSH server ,就断线!时间为秒!
    
    Compression yes              # 是否可以使用压缩指令?
    
    
    HostKey /etc/ssh/ssh_host_key          # SSH version 1 使用的私钥
    
    
    HostKey /etc/ssh/ssh_host_rsa_key   # SSH version 2 使用的 RSA 私钥
    
    
    HostKey /etc/ssh/ssh_host_dsa_key  # SSH version 2 使用的 DSA 私钥
    
    
    KeyRegenerationInterval 3600       # 由前面联机的说明可以知道, version 1 会使用 server 的 Public Key ,每隔一段时间来重新建立一次!时间为秒!
    
    ServerKeyBits 768                         # Server key 的长度!
    
    
    SyslogFacility AUTH                        # 当有人使用 SSH 登入系统的时候,SSH会记录信息
    
    
    LogLevel INFO                            # 登录记录的等级---》全部
    
    PermitRootLogin no                     # 是否允许 root 登入!预设是允许的,但是建议设定成 no!
    
    UserLogin no                         # 在 SSH 底下本来就不接受 login 这个程序的登入!
    
    StrictModes yes                   # 当使用者的 host key 改变之后,Server 就不接受联机
    
    RSAAuthentication yes                 # 是否使用纯的 RSA 认证!?仅针对 version 1 !
    
    PubkeyAuthentication yes              # 是否允许 Public Key ?只有 version 2
    
    AuthorizedKeysFile .ssh/authorized_keys         #设定若要使用不需要密码登入的账号时,那么那个账号的存放档案所在档名!
    
    RhostsAuthentication no          # 本机系统不使用 .rhosts , .rhosts 不安全!
    
    IgnoreRhosts yes              # 是否取消使用 ~/.ssh/.rhosts 来做为认证!
    
    RhostsRSAAuthentication no         # 针对 version 1 ,使用 rhosts 档案在/etc/hosts.equiv配合 RSA 演算方式来进行认证!
    
    HostbasedAuthentication no         # 这个项目与上面的项目类似,不过是给 version 2 使用的!
    
    IgnoreUserKnownHosts no      # 是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录的主机内容
    
    PasswordAuthentication yes         # 密码验证当然是需要的!
    
    PermitEmptyPasswords no      # 上面那一项如果设定为 yes 的话,这一项就最好设定为 no ,这个项目在是否允许以空的密码登入!
    
    ChallengeResponseAuthentication yes         # 挑战任何的密码认证!所以,任何 login.conf规定的认证方式,均可适用!
    
    PAMAuthenticationViaKbdInt yes         # 是否启用其它的 PAM 模块!启用这个模块将会导致 PasswordAuthentication 设定失效!
    

    #与Kerberos 有关的参数设定!底下不用设定
    KerberosAuthentication no
      
      KerberosOrLocalPasswd yes
      
      KerberosTicketCleanup yes
      
      KerberosTgtPassing no

    #有关在 X-Window 底下使用的相关设定
    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost yes
    PrintMotd no # 登入后是否显示出一些信息呢?例如上次登入的时间、地点等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !
    PrintLastLog yes      # 显示上次登入的信息!可以啊!预设也是 yes !
    KeepAlive yes       # 一般而言,如果设定这项目的话,那么 SSH Server 会传送KeepAlive 的讯息给 Client 端,以确保两者的联机正常!在这个情况下,任何一端死掉后, SSH 可以立刻知道!而不会有僵尸程序的发生!
    UsePrivilegeSeparation yes # 使用者的权限设定项目!
    MaxStartups 10 # 同时允许几个尚未登入的联机画面?
    DenyUsers * # 设定受抵挡的使用者名称

    二:常用的SSH服务端远程登录配置与实践

    配置文件 /ect/ssh/sshd_config
    #常用参数:
    Port # 可修改ssh访问端口,默认为22。默认在本机的所有网络接口上监听。端口范围:0~65535,不能与已有的服务器端口冲突

     PermitEmptyPasswords   #是否允许密码为空的用户远程登录。默认为"no"
        
        PermitRootLogin             #是否允许ssh远程登录root帐号,建议为no
        
        ClientAliveInterval 0        #客户端连接数做限制,根据需求设置
        
        UseDNS                          #指定sshd是否应该对远程主机名进行方向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。个人建议改成no,否则可能会导致ssh连接很慢
        
        GSSAPIAuthentication no             #解决Linux之间使用SSH远程连接慢的问题
     
        #限制可登录用户的办法如下:
    
    
        AllowUsers user1 user2 user3        #允许ssh登录用户
        
        DenyUsers             #禁止ssh登陆用户
        
        AllowGroups         #允许ssh登录用户组
        
        DenyGroups         #禁止ssh登陆用户组
    

    #温馨提示:这里用虚拟机做测试,以免参数设置有误,连接不上。可以上真实虚拟机修改
    [root@localhost ssh]# cp sshd_config sshd_config$(date +%F)

    [root@localhost ssh]# cat sshd_config
    
    Port 52168                          #连接端口改为52168
    
    PermitRootLogin no                  #不允许ssh远程登录root帐号
    
    PermitEmptyPasswords no             #不允许密码为空的用户远程登录
    
    UseDNS no                           #不进行解析
    
    GSSAPIAuthentication no             #解决Linux之间使用SSH远程连接慢的问题
    
    allowusers ywxi@192.168.1.11        #允许ywxi用户使用本机内网地址链接
    
    denyusers  ywxitest@192.168.1.11    #禁止ywxitest用户使用本机内网地址连接
    
    [root@localhost ssh]# useradd ywxi    #创建用户,用来测试
    
    [root@localhost ssh]# useradd ywxitest
    
    [root@localhost ssh]# passwd ywxi    #给ywxi用户设置密码,暂时不给ywxitest用户设置
    
    [root@localhost ssh]# ifconfig |grep 'inet addr'    #虚拟机IP地址
    
              inet addr:192.168.1.8  Bcast:192.168.1.255  Mask:255.255.255.0
              inet addr:127.0.0.1  Mask:255.0.0.0
              
    [root@localhost ssh]# /etc/init.d/sshd restart        #重启服务,使SSH服务端配置生效
    
    Stopping sshd:                                             [  OK  ]
    Starting sshd:                                             [  OK  ]
    
    
    [root@localhost ssh]# grep 52168 /etc/sysconfig/iptables
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 52168 -j ACCEPT    #添加防火墙规则允许52168端口开放
    
    [root@localhost ssh]# /etc/init.d/iptables restart
    iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
    iptables: Flushing firewall rules:                         [  OK  ]
    iptables: Unloading modules:                               [  OK  ]
    iptables: Applying firewall rules:                         [  OK  ]
    

    以下是客户端用CRT工具通过sshd服务远程连接虚拟主机过程:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    用root用户连接,一直会提示密码验证失败
    在这里插入图片描述
    修改配置PermitRootLogin yes 改为yes,注意有allowusers限制用户时需要把root用户也允许
    修改后,重启sshd服务设置好端口后,root用户即可连接
    在这里插入图片描述

    三:更高级的SSH安全策略

    限制用户登录IP的方法有两种;

    1)修改/etc/hosts.allow和/etc/hosts.deny 这两个文件,把需要通过的IP写在/etc/hosts.allow 文件里
    
    
    [root@localhost ~]# cat /etc/hosts.allow 
    sshd:192.168.1.11:allow
    [root@localhost ~]# cat /etc/hosts.deny 
    sshd:ALL
    [root@localhost ~]# /etc/init.d/sshd restart     #重启服务使配置生效
    
    
    2)修改/etc/ssh/sshd_config文件
    
    [root@localhost ~]# cat /etc/ssh/sshd_config 
    allowusers ywxi@192.168.1.11
    allowusers root@192.168.1.11
    denyusers  ywxitest@192.168.1.11
    [root@localhost ~]# /etc/init.d/sshd restart     #重启服务使配置生效
    

    更改SSH监听的IP,使其监听内网IP段或指定ip;

    1)更改SSH监听的IP,使其监听内网IP段
    
    [root@localhost ssh]# cat sshd_config|grep Listen
    ListenAddress 192.168.1.8:52168
    
    2)通过防火墙限制仅能使用内网IP连接此服务器。限制命令如下
    iptables -I INPUT -p -tcp --dport 52168 -s 192.168.1.0/24 -j ACCEPT
    
    3)通过拨号到×××服务器,然后从局域网访问这些服务器,提升安全性。
    

    四:ssh服务安全加强的建议(仅供参考,工作中根据需求来就好行)

         1、不要使用默认端口
    
         2、禁止使用protocol version 1
    
         3、限制可登录用户
    
         4、设定空闲会话超时时长
         
         5、利用防火墙设置ssh访问策略
         
         6、仅监听特定的IP地址
         
         7、基于口令认证时,使用强密码策略
         
         tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
    
         8、使用基于密钥的认证
         
         9、禁止使用空密码
         
         10、禁止root用户直接登录
         
         11、限制ssh的访问频度和并发在线数
         
         12、做好日志,经常分析
         
         13、锁死sshd服务的配置文件,防止篡改,修改锁文件命令
    

    解决centos7 sshd端口修改后,重启服务器sshd无法连接的问题

    **针对centos7的变化,修改sshd端口需要修改/etc/ssh/sshd_config,selinux,防火墙
    **

    1、修改/etc/ssh/sshd_config

    执行命令:vi /etc/ssh/sshd_config
    找到行
    #Port 22 
    添加一行
    Port 5000
    

    2、修改SELinux 添加5000端口到 SELinux

    执行命令:semanage port -m -t ssh_port_t -p tcp 5000
    

    3、然后确认一下是否添加进去

    执行命令:semanage port -l | grep ssh
    如果成功会输出
    ssh_port_t tcp 5000, 22
    

    4、修改firewall配置

    执行命令:firewall-cmd --zone=public --add-port=5000/tcp --permanent 
    

    5、重载防火墙

    执行命令:firewall-cmd --reload
    

    6、重启ssh服务

    执行命令:systemctl restart sshd.service
    

    7、测试新端口的ssh连接

    执行命令:ssh xx.xx.xx.xx -p 5000
    

    8、重启服务器,并测试ssh连接

    执行命令:reboot
    
    展开全文
  • SSH框架demo

    千次下载 热门讨论 2016-03-22 15:55:40
    这是基于SSH框架的简单demo,里面详细写了关于SSH的框架搭建~~很适合学习哦!
  • ssh 命令连接

    万次阅读 多人点赞 2019-03-18 21:59:39
    SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。 ssh服务端由2部分组成: ...

    ##Linuxssh命令详解

    SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP22端口),包括公共秘钥等交换等信息。

    ssh服务端由2部分组成:openssh(提供ssh服务)openssl(提供加密的程序)

    ssh的客户端可以用XSHELL,Securecrt,Mobaxterm等工具进行连接

    SSH的工作机制

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

    SSH的加密技术

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

    1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码

    2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。

    SSH2支持RSA和DSA密钥

    DSA:digitalsignatureAlgorithm数字签名

    RSA:既可以数字签名又可以加密

    SSH知识小结

    1.SSH是安全的加密协议,用于远程连接Linux服务器

    2.SSH的默认端口是22,安全协议版本是SSH2

    3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器

    4.SSH客户端包含ssh连接命令和远程拷贝scp命令等

    如何防止SSH登录入侵

    1.密钥登录,更改端口

    2.牤牛阵法

    3.监听本地内网IP(ListenAddress192.168.25.*)

    SSH功能大全

    1.登录

    ssh-p22omd@192.168.25.137

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

    sshroot@192.168.25.137ls-ltr/backup/data

    ==>sshroot@192.168.25.137/bin/ls-ltr/backup/data

    3.查看已知主机

    cat/root/.ssh/known_hosts

    4.ssh远程执行sudo命令

    ssh-tomd@192.168.25.137sudorsynchosts/etc/

    5.scp

    1.功能–>远程文件的安全(加密)拷贝

    scp-P22-r-p/home/omd/h.txtomd@192.168.25.137:/home/omd/

    2.scp知识小结

    scp是加密远程拷贝,cp为本地拷贝

    可以推送过去,也可以拉过来

    每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync

    6.ssh自带的sftp功能

    1.Window和Linux的传输工具

    wincpfilezip

    sftp–>基于ssh的安全加密传输

    samba

    2.sftp客户端连接

    sftp-oPort=22root@192.168.25.137

    put/etc/hosts/tmp

    get/etc/hosts/home/omd

    3.sftp小结:

    1.linux下使用命令:sftp-oPort=22root@x.x.x.x

    2.put加客户端本地路径上传

    3.get下载服务器端内容到本地

    4.远程连接默认连接用户的家目录

    ssh常见命令参数

    usage:ssh[-1246AaCfgKkMNnqsTtVvXxYy][-bbind_address][-ccipher_spec]

    [-D[bind_address:]port][-eescape_char][-Fconfigfile]

    [-iidentity_file][-L[bind_address:]port:host:hostport]

    [-llogin_name][-mmac_spec][-Octl_cmd][-ooption][-pport]

    [-R[bind_address:]port:host:hostport][-Sctl_path]

    [-Whost:port][-wlocal_tun[:remote_tun]]

    [user@]hostname[command]

    关于后台ssh服务的相关

    #查询openssl软件

    rpm-qaopensshopenssl

    #查询sshd进程

    ps-ef|grepssh

    –>/usr/sbin/sshd

    #查看ssh端口

    netstat-lntup|grepssh

    ss|grepssh(效果同上,同下,好用)

    netstat-a|grepssh(记住这个)

    netstat-lnt|grep22==>查看22端口有没有开/ssh服务有没有开启

    技巧:netstat-lnt|grepssh|wc-l–>只要大于2个就是ssh服务就是好的

    #查看ssh的秘钥目录

    ll/root/.ssh/known_hosts#当前用户家目录的.ssh目录下

    #ssh的配置文件

    cat/etc/ssh/sshd_config

    #ssh服务的关闭

    servicesshdstop

    #ssh服务的开启:

    servicesshdstart

    #ssh服务的重启

    servicesshdreload[停止进程后重启]==>推荐

    servicesshdrestart[干掉进程后重启]==>不推荐

    #ssh远程登录

    ssh192.168.1.100#默认利用当前宿主用户的用户名登录

    sshomd@192.168.1.100#利用远程机的用户登录

    sshomd@192.168.1.100-ostricthostkeychecking=no#首次登陆免输yes登录

    sshomd@192.168.1.100"ls/home/omd"#当前服务器A远程登录服务器B后执行某个命令

    sshomd@192.168.1.100-t"sh/home/omd/ftl.sh"#当前服务器A远程登录服务器B后执行某个脚本

    ssh免密设置

    1、进入用户的家目录

    [root@localhost~]#cd/root/.ssh/【root用户就在root目录下的.ssh目录】

    [root@localhost~]#cd/home/omd/.ssh/【普通用户就是在家目录下的.ssh目录】

    image

    2、根据DSA算法生成私钥和公钥【默认建立在当前用户的家目录】

    [root@localhost.ssh]#ssh-keygen-tdsa#一路回车即可

    id_dsa–>私钥(钥匙)

    id_dsa.pub–>公钥(锁)

    image

    3.拷贝公钥给目标服务器

    [root@localhost.ssh]#ssh-copy-id-iid_dsa.pubomd@192.168.25.110【使用ssh登录的默认端口22】

    [root@localhost.ssh]#ssh-copy-id-iid_dsa.pub–p666omd@192.168.25.120【使用ssh登录设置的端口666】

    4.查看目标服务器生成的文件

    [omd@localhost.ssh]$ll/home/omd/.ssh/authorized_keys

    image

    5.免密码登录目标服务器

    sshomd@192.168.25.110

    6.总结一下钥匙和锁的关系

    1.多个钥匙开一把锁

    把id_dsa.pub复制给各个服务器

    2.一个钥匙开duobasuo

    把id_dsa传给各个服务器

    把id_dsa传给自己

    ssh排查问题

    1.判断物理链路是否通ping192.168.25.130线路|防火墙|是否同一个网的

    ping本身是icmp协议

    2.判断服务是否正常

    telnet192.168.25.13022

    3.Linux防火墙

    serviceiptablesstatus==>/etc/init.d/iptablesstatus

    4.打开ssh的调测进行观察

    ssh-vvvomd@192.168.1.100

    SSH批量分发与管理方案小结

    1.利用root做sshkey验证

    优点:简单,易用

    缺点:安全性能差,无法禁止root远程连接

    2.利用普通用户omd–>推荐

    思路:把要分发的文件拷贝到服务器用户的家目录,然后利用sudo提权拷贝分发的文件和对应目录

    优点:安全

    缺点:复杂,配置麻烦

    1.sudo提权

    echo’omdAll=(All)NOPASSWD:/usr/bin/rsync’>>/etc/sudoers

    visudo-c

    grepomd/etc/sudoers

    2.ssh分发到服务器的家目录

    ssh-p22-r/etc/hostsomd@192.168.25.137:~

    3.ssh使用sudo复制到目标服务器的/etc

    ssh-tomd@192.168.25.137sudorsynchosts/etc/

    3.拓展方案2,不用sudo,而是设置suid对固定命令提权

    优点:相当安全

    缺点:复杂,安全性较差,任何人都可以处理带有suid权限的命令

    1.whichrsync

    2.chmod4755/usr/bin/rsync

    ssh章节小结

    1.ssh远程的加密连接协议,相关软件openssh,openssl

    2.默认端口22

    3.ssh版本协议

    4.服务器ssh连接,ftp连接,sshd守护进程,开机启动

    5.ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp,

    6.安全验证方式:口令,密钥学习原理

    7.ssh服务优化:改端口,改监听,noroot,noempty,noDNS,

    8.ssh密钥对,公钥在服务器端,私钥在客户端

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

    1-1修改/etc/ssh/sshd_config
    GSSAPIAuthenticationyes解决一台服务器管理多个ssh服务

    UseDNSno加快响应速度因为在内网环境下

    PermitRootLoginno不运行root用户直接登录

    Port11544更改访问端口号

    ListenAddress192.168.25.130只监听内网的IP

    MatchUseranoncvs当前环境允许登录的用户

    PermitRootLoginno是否允许root用户登录,一般不允许开

    1-2重启服务

    servicesshdrestart写入命令进内存

    servicesshdreload(优先)reload是一个平滑的访问,不影响用户使用

    1-3查看连接端口

    netstat-an|grepEST

    SSH跳过HostKeyChecking,不用输入yes

    SSH跳过输入ssh跳过RSAkeyfingerprint输入yes/no

    在配置大量的节点之间需要ssh连通的时候,如果自动复制很多节点,都需要输入yes,两两节点之间都要互通一次,这样会造成很大的麻烦

    解决1;修改配置文件/etc/ssh/ssh_config

    找到#StrictHostKeyCheckingask

    修改为:StrictHostKeyCheckingno

    解决2:添加参数–o【o=option】

    sshroot@192.168.25.133-o"StrictHostKeyCheckingno"

    scp-o"StrictHostKeyCheckingno"newfile.txt<ahref=“mailto:root@192.168.25.133/root”>root@192.168.25.133:/root

    ssh带密码登录之sshpass的安装

    【下载地址】https://sourceforge.net/projects/sshpass/files/latest/download

    上传文件到服务器

    CentOS下安装:

    [root@localhost~]#tarxfsshpass-1.06.tar.gz

    [root@localhost~]#cdsshpass-1.06

    [root@localhostsshpass-1.06]#./configure

    [root@localhostsshpass-1.06]#make&&makeinstall

    检查是否安装成功:

    [root@localhostsshpass-1.06]#whichsshpass

    /usr/local/bin/sshpass

    远程登录主机:

    sshpass-pFTL600@HHsshomd@192.168.25.110-o"StrictHostKeyCheckingno"

    注意:如果是第一次登录,需要输入手动yes,此时sshpass并不会给提示,所以登录异常

    Ubuntu下安装方法一[推荐]:简单

    omd@omd-virtual-machine:~/sshpass-1.06$sudoaptinstallsshpass

    安装成功:

    omd@omd-virtual-machine:~/sshpass-1.06$whichsshpass

    Ubuntu下安装方法二:

    omd@omd-virtual-machine:~$tarxfsshpass-1.06.tar.gz

    omd@omd-virtual-machine:~$cdsshpass-1.06/

    omd@omd-virtual-machine:~/sshpass-1.06$./configure

    omd@omd-virtual-machine:~/sshpass-1.06$sudomake&&makeinstall

    其同CentOS下安装

    ssh源码修改添加ssh访问标志位

    【更多参考】https://www.cnblogs.com/ftl1012/p/9459819.htmlLinuxssh命令详解

    SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP22端口),包括公共秘钥等交换等信息。

    ssh服务端由2部分组成:openssh(提供ssh服务)openssl(提供加密的程序)

    ssh的客户端可以用XSHELL,Securecrt,Mobaxterm等工具进行连接

    SSH的工作机制

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

    SSH的加密技术

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

    1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码

    2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。

    SSH2支持RSA和DSA密钥

    DSA:digitalsignatureAlgorithm数字签名

    RSA:既可以数字签名又可以加密

    SSH知识小结

    1.SSH是安全的加密协议,用于远程连接Linux服务器

    2.SSH的默认端口是22,安全协议版本是SSH2

    3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器

    4.SSH客户端包含ssh连接命令和远程拷贝scp命令等

    如何防止SSH登录入侵

    1.密钥登录,更改端口

    2.牤牛阵法

    3.监听本地内网IP(ListenAddress192.168.25.*)

    SSH功能大全

    1.登录

    ssh-p22omd@192.168.25.137

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

    sshroot@192.168.25.137ls-ltr/backup/data

    ==>sshroot@192.168.25.137/bin/ls-ltr/backup/data

    3.查看已知主机

    cat/root/.ssh/known_hosts

    4.ssh远程执行sudo命令

    ssh-tomd@192.168.25.137sudorsynchosts/etc/

    5.scp

    1.功能–>远程文件的安全(加密)拷贝

    scp-P22-r-p/home/omd/h.txtomd@192.168.25.137:/home/omd/

    2.scp知识小结

    scp是加密远程拷贝,cp为本地拷贝

    可以推送过去,也可以拉过来

    每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync

    6.ssh自带的sftp功能

    1.Window和Linux的传输工具

    wincpfilezip

    sftp–>基于ssh的安全加密传输

    samba

    2.sftp客户端连接

    sftp-oPort=22root@192.168.25.137

    put/etc/hosts/tmp

    get/etc/hosts/home/omd

    3.sftp小结:

    1.linux下使用命令:sftp-oPort=22root@x.x.x.x

    2.put加客户端本地路径上传

    3.get下载服务器端内容到本地

    4.远程连接默认连接用户的家目录

    ssh常见命令参数

    usage:ssh[-1246AaCfgKkMNnqsTtVvXxYy][-bbind_address][-ccipher_spec]

    [-D[bind_address:]port][-eescape_char][-Fconfigfile]

    [-iidentity_file][-L[bind_address:]port:host:hostport]

    [-llogin_name][-mmac_spec][-Octl_cmd][-ooption][-pport]

    [-R[bind_address:]port:host:hostport][-Sctl_path]

    [-Whost:port][-wlocal_tun[:remote_tun]]

    [user@]hostname[command]

    关于后台ssh服务的相关

    #查询openssl软件

    rpm-qaopensshopenssl

    #查询sshd进程

    ps-ef|grepssh

    –>/usr/sbin/sshd

    #查看ssh端口

    netstat-lntup|grepssh

    ss|grepssh(效果同上,同下,好用)

    netstat-a|grepssh(记住这个)

    netstat-lnt|grep22==>查看22端口有没有开/ssh服务有没有开启

    技巧:netstat-lnt|grepssh|wc-l–>只要大于2个就是ssh服务就是好的

    #查看ssh的秘钥目录

    ll/root/.ssh/known_hosts#当前用户家目录的.ssh目录下

    #ssh的配置文件

    cat/etc/ssh/sshd_config

    #ssh服务的关闭

    servicesshdstop

    #ssh服务的开启:

    servicesshdstart

    #ssh服务的重启

    servicesshdreload[停止进程后重启]==>推荐

    servicesshdrestart[干掉进程后重启]==>不推荐

    #ssh远程登录

    ssh192.168.1.100#默认利用当前宿主用户的用户名登录

    sshomd@192.168.1.100#利用远程机的用户登录

    sshomd@192.168.1.100-ostricthostkeychecking=no#首次登陆免输yes登录

    sshomd@192.168.1.100"ls/home/omd"#当前服务器A远程登录服务器B后执行某个命令

    sshomd@192.168.1.100-t"sh/home/omd/ftl.sh"#当前服务器A远程登录服务器B后执行某个脚本

    ssh免密设置

    1、进入用户的家目录

    [root@localhost~]#cd/root/.ssh/【root用户就在root目录下的.ssh目录】

    [root@localhost~]#cd/home/omd/.ssh/【普通用户就是在家目录下的.ssh目录】

    image

    2、根据DSA算法生成私钥和公钥【默认建立在当前用户的家目录】

    [root@localhost.ssh]#ssh-keygen-tdsa#一路回车即可

    id_dsa–>私钥(钥匙)

    id_dsa.pub–>公钥(锁)

    image

    3.拷贝公钥给目标服务器

    [root@localhost.ssh]#ssh-copy-id-iid_dsa.pubomd@192.168.25.110【使用ssh登录的默认端口22】

    [root@localhost.ssh]#ssh-copy-id-iid_dsa.pub–p666omd@192.168.25.120【使用ssh登录设置的端口666】

    4.查看目标服务器生成的文件

    [omd@localhost.ssh]$ll/home/omd/.ssh/authorized_keys

    image

    5.免密码登录目标服务器

    sshomd@192.168.25.110

    6.总结一下钥匙和锁的关系

    1.多个钥匙开一把锁

    把id_dsa.pub复制给各个服务器

    2.一个钥匙开duobasuo

    把id_dsa传给各个服务器

    把id_dsa传给自己

    ssh排查问题

    1.判断物理链路是否通ping192.168.25.130线路|防火墙|是否同一个网的

    ping本身是icmp协议

    2.判断服务是否正常

    telnet192.168.25.13022

    3.Linux防火墙

    serviceiptablesstatus==>/etc/init.d/iptablesstatus

    4.打开ssh的调测进行观察

    ssh-vvvomd@192.168.1.100

    SSH批量分发与管理方案小结

    1.利用root做sshkey验证

    优点:简单,易用

    缺点:安全性能差,无法禁止root远程连接

    2.利用普通用户omd–>推荐

    思路:把要分发的文件拷贝到服务器用户的家目录,然后利用sudo提权拷贝分发的文件和对应目录

    优点:安全

    缺点:复杂,配置麻烦

    1.sudo提权

    echo’omdAll=(All)NOPASSWD:/usr/bin/rsync’>>/etc/sudoers

    visudo-c

    grepomd/etc/sudoers

    2.ssh分发到服务器的家目录

    ssh-p22-r/etc/hostsomd@192.168.25.137:~

    3.ssh使用sudo复制到目标服务器的/etc

    ssh-tomd@192.168.25.137sudorsynchosts/etc/

    3.拓展方案2,不用sudo,而是设置suid对固定命令提权

    优点:相当安全

    缺点:复杂,安全性较差,任何人都可以处理带有suid权限的命令

    1.whichrsync

    2.chmod4755/usr/bin/rsync

    ssh章节小结

    1.ssh远程的加密连接协议,相关软件openssh,openssl

    2.默认端口22

    3.ssh版本协议

    4.服务器ssh连接,ftp连接,sshd守护进程,开机启动

    5.ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp,

    6.安全验证方式:口令,密钥学习原理

    7.ssh服务优化:改端口,改监听,noroot,noempty,noDNS,

    8.ssh密钥对,公钥在服务器端,私钥在客户端

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

    1-1修改/etc/ssh/sshd_config
    GSSAPIAuthenticationyes解决一台服务器管理多个ssh服务

    UseDNSno加快响应速度因为在内网环境下

    PermitRootLoginno不运行root用户直接登录

    Port11544更改访问端口号

    ListenAddress192.168.25.130只监听内网的IP

    MatchUseranoncvs当前环境允许登录的用户

    PermitRootLoginno是否允许root用户登录,一般不允许开

    1-2重启服务

    servicesshdrestart写入命令进内存

    servicesshdreload(优先)reload是一个平滑的访问,不影响用户使用

    1-3查看连接端口

    netstat-an|grepEST

    SSH跳过HostKeyChecking,不用输入yes

    SSH跳过输入ssh跳过RSAkeyfingerprint输入yes/no

    在配置大量的节点之间需要ssh连通的时候,如果自动复制很多节点,都需要输入yes,两两节点之间都要互通一次,这样会造成很大的麻烦

    解决1;修改配置文件/etc/ssh/ssh_config

    找到#StrictHostKeyCheckingask

    修改为:StrictHostKeyCheckingno

    解决2:添加参数–o【o=option】

    sshroot@192.168.25.133-o"StrictHostKeyCheckingno"

    scp-o"StrictHostKeyCheckingno"newfile.txt<ahref=“mailto:root@192.168.25.133/root”>root@192.168.25.133:/root

    ssh带密码登录之sshpass的安装

    【下载地址】https://sourceforge.net/projects/sshpass/files/latest/download

    上传文件到服务器

    CentOS下安装:

    [root@localhost~]#tarxfsshpass-1.06.tar.gz

    [root@localhost~]#cdsshpass-1.06

    [root@localhostsshpass-1.06]#./configure

    [root@localhostsshpass-1.06]#make&&makeinstall

    检查是否安装成功:

    [root@localhostsshpass-1.06]#whichsshpass

    /usr/local/bin/sshpass

    远程登录主机:

    sshpass-pFTL600@HHsshomd@192.168.25.110-o"StrictHostKeyCheckingno"

    注意:如果是第一次登录,需要输入手动yes,此时sshpass并不会给提示,所以登录异常

    Ubuntu下安装方法一[推荐]:简单

    omd@omd-virtual-machine:~/sshpass-1.06$sudoaptinstallsshpass

    安装成功:

    omd@omd-virtual-machine:~/sshpass-1.06$whichsshpass

    Ubuntu下安装方法二:

    omd@omd-virtual-machine:~$tarxfsshpass-1.06.tar.gz

    omd@omd-virtual-machine:~$cdsshpass-1.06/

    omd@omd-virtual-machine:~/sshpass-1.06$./configure

    omd@omd-virtual-machine:~/sshpass-1.06$sudomake&&makeinstall

    其同CentOS下安装

    ssh源码修改添加ssh访问标志位

    【更多参考】https://www.cnblogs.com/ftl1012/p/9459819.html

    展开全文
  • Windows安装SSH

    千次阅读 2022-04-08 08:58:37
    安装ssh客户端4.安装ssh服务端5.启动并配置 OpenSSH 服务器2.自己安装配置1.下载安装包2.解压3.配置环境变量4.服务安装5.开放端口6.配置开机自启sshd服务7.启动ssh服务端8.测试ssh连接 1.微软官网安装教程 官网文档...
  • 什么是SSH 以及常见的ssh 功能

    万次阅读 多人点赞 2018-06-28 18:02:54
    什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候...
  • SSH框架实现简单的用户管理系统(增删改查)

    千次下载 热门讨论 2015-04-15 10:13:17
    SSH简单的入门案例,对用户的信息进行管理,实现增删改查功能。
  • ssh详解

    万次阅读 多人点赞 2018-09-19 13:15:07
    本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机。 另外,作者翻译了ssh客户端命令的man文档,如...
  • SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。 ssh服务端由2部分组成: ...
  • github ssh git使用指定的ssh文件名

    千次阅读 2021-08-16 14:48:58
    以管理员身份运行powershell 使用你的github账号邮箱生成一个ssh key ssh-keygen -t ed25519 -C "your@mail.com" -f "你想...查看是否设置ssh-agent,如下图情况则为ssh-agent未运行 ssh-add -l [外链图片转存失败..
  • jenkins配置ssh服务器&配置ssh servers

    千次阅读 2021-12-30 11:01:36
    jenkins配置ssh服务器&配置ssh servers
  • Docker 容器里安装ssh和连接ssh

    千次阅读 2021-11-03 11:21:36
    重启ssh服务 root@be4defdb43d7:/# /etc/init.d/ssh restart Restarting OpenBSD Secure Shell server sshd 本机连接ssh root@LIZ:~# ssh root@0.0.0.0 -p 6789 然后输入密码 好了,直接连上了。如果你先在其他电脑...
  • SSH协议解析及wireshark抓包分析

    千次阅读 2021-07-11 08:42:15
    ssh中文名称叫安全外壳协议,是一种加密的网络传输协议。SSH 在 TCP 和 UDP 中都被分配了端口 22。 但是,由于需要可靠的通信、正确的数据包排序等,该协议主要在 TCP 上运行。 为什么需要SSHSSH 和 telnet 之间...
  • OpenSSH概念和基本用法——SSH 客户端

    千次阅读 2021-01-04 23:59:47
    由于在分布式数据库运维过程中进行脚本自动化必然会涉及SSH登录工具,故摘抄此篇文章以供学习之用。 SSH 是 Linux 系统的登录工具,现在广泛用于服务器登录和各种加密通信。本教程介绍 SSH(主要是它的实现 OpenSSH...
  • 配置ssh过程

    千次阅读 2022-01-25 19:26:35
    1.创建ssh公钥 ssh-keygen -t rsa -C xxx@xxx(自己的邮箱地址) 2.进入.ssh文件夹下的id_rsa.pub,并将其内容复制 3.在github的设置的创建ssh密钥的地方,新建一个钥匙 3.1将刚才复制的内容放在title下面的大框框...
  • SSH介绍与神器Tabby

    千次阅读 2022-01-06 16:41:49
    本文介绍了什么是SSHSSH的原理和使用。适合新手阅读。
  • ssh免密登录

    千次阅读 2022-01-03 11:47:05
    ssh免密登录 1、简洁操作 主机A免密码登录主机B:将A的公钥上传到主机B 1.1、 在主机A创建密钥对 ssh-keygen #创建证书 #然后均回车(选择默认) 1.2、将公钥文件上传至免登录主机B ssh-copy-id -i ~/.ssh/id_rsa....
  • SSH远程登录

    千次阅读 2021-08-15 09:54:29
    SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。 dpkg -l | grep ssh 如果只是想远程登陆别的机器只需要安装客户端(Ubuntu默认安装了客户端),...
  • 最全SSH命令 - 11种用法

    万次阅读 多人点赞 2022-01-12 10:56:16
    SSH命令1.使用ssh连接远程主机2.ssh连接到其他端口3.使用ssh在远程主机执行一条命令并显示到本地, 然后继续本地工作4.在远程主机运行一个图形界面的程序5.如何配置 SSH6.构建 ssh 密钥对7.查看是否已经添加了对应...
  • 生成ssh公钥(ssh-keygen)

    千次阅读 2021-10-15 11:50:10
    生成ssh公钥(ssh-keygen) 一、进入码云的官网地址 没有账号就注册账号,有账号直接登录 二、生成/添加SSH公钥 你可以按如下命令来生成 sshkey: ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com" # Generating public/...
  • Linux配置SSH免密登录

    千次阅读 2022-03-20 16:21:34
    Linux配置SSH免密登录

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 838,401
精华内容 335,360
关键字:

Ssh