1、SSH 无缝切换远程加密

一、了解SSH

1.随便说说

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

2.过关

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

第一种级别(基于口令的安全验证)

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

第二种级别(基于密匙的安全验证)

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

3.层次

SSH 主要由三部分组成:

传输层协议 [SSH-TRANS]

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

用户认证协议 [SSH-USERAUTH]

用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。
连接协议 [SSH-CONNECT]
将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接。

二、事前准备

1.简单说一句

ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

2.常用语法:

ssh(选项)(参数)

-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份文件;
-l:指定连接远程服务器登录用户名;
-N:不执行远程指令;
-o:指定配置选项;
-p:指定远程服务器上的端口;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。

3.官方语法

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]

三、一顿操作(快速连接)

1.下载安装XSHELL
Google一下
2.新建连接会话

3.设置用户身份验证(默认选择Password)

4.连接服务器

四、无缝连接

1.确认两台服务器信息

2.设置hosts配置域名映射

3.生成密钥

4.拷贝密钥到另一台主机

5.查看服务器的密钥

6.无密码加密连接

五、回顾

1.解析.ssh目录下的奥秘

[root@web1 .ssh]# tree -l.   ├── authorized_keys #web1主机上的认证文件:记录登录密钥├── id_rsa #web1主机的私钥├── id_rsa.pub #web1主机的公钥└── known_hosts #记录登录到web1的服务key:校验作用0 directories, 4 files   [root@web1 .ssh]#

步骤如下:web1服务器生成密钥–》复制web1的公钥到web2–》输入web2服务器密码–》web1公钥加入到web2的认证文件–》web1无密码连接web2–》生成web1的校验密钥到known_hosts–》web2服务器校验known_hosts与 authorized_keys文件是否匹配–》匹配就允许登录,反之拒绝–》web2无密码连接web1,同理。

2、实战 SSH 端口转发

第一部分 概述

当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我们带来什么好处吧!

1.1 端口转发概述

让我们先来了解一下端口转发的概念吧。我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,那么也是能够通过将 TCP 端口转发来使用 SSH 进行通讯。总的来说 SSH 端口转发能够提供两大功能:
l 加密 SSH Client 端至 SSH Server 端之间的通讯数据。
l 突破防火墙的限制完成一些之前无法建立的 TCP 连接。
图 1. SSH 端口转发

如上图所示,使用了端口转发之后,TCP 端口 A 与 B 之间现在并不直接通讯,而是转发到了 SSH 客户端及服务端来通讯,从而自动实现了数据加密并同时绕过了防火墙的限制。

第二部分 本地转发与远程转发

1.1 本地转发实例分析

我们先来看第一个例子,在实验室里有一台LDAP服务器(LdapServerHost),但是限制了只有本机上部署的应用才能直接连接此LDAP服务器(也就是通过127.0.0.1或localhost)。如果我们由于调试或者测试的需要想临时从远程机器(LdapClientHost)直接连接到这个 LDAP 服务器 , 有什么方法能够实现呢?
答案无疑是本地端口转发了,它的命令格式是:

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

在 LdapClientHost 上执行如下命令即可建立一个 SSH 的本地端口转发,例如:

$ ssh -L 7001:localhost:389 LdapServerHost

图 2. 本地端口转发

这里需要注意的是本例中我们选择了 7001 端口作为本地的监听端口,在选择端口号时要注意非管理员帐号是无权绑定 1-1023 端口的,所以一般是选用一个 1024-65535 之间的并且尚未使用的端口号即可。
然后我们可以将远程机器(LdapClientHost)上的应用直接配置到本机的 7001 端口上(而不是 LDAP 服务器的 389 端口上)。之后的数据流将会是下面这个样子:
l 我们在 LdapClientHost 上的应用将数据发送到本机的 7001 端口上,
l 而本机的 SSH Client 会将 7001 端口收到的数据加密并转发到 LdapServertHost 的 SSH Server 上。
l SSH Server 会解密收到的数据并将之转发到监听的 LDAP 389 端口上,
l 最后再将从 LDAP 返回的数据原路返回以完成整个流程。
l 我们可以看到,这整个流程应用并没有直接连接 LDAP 服务器,而是连接到了本地的一个监听端口,但是 SSH 端口转发完成了剩下的所有事情,加密,转发,解密,通讯。

这里有几个地方需要注意:

(1) SSH 端口转发是通过 SSH 连接建立起来的,我们必须保持这个 SSH 连接以使端口转发保持生效。一旦关闭了此连接,相应的端口转发也会随之关闭。
(2) 我们只能在建立 SSH 连接的同时创建端口转发,而不能给一个已经存在的 SSH 连接增加端口转发。
(3) 你可能会疑惑上面命令中的 为什么用 localhost,它指向的是哪台机器呢?在本例中,它指向 LdapServertHost 。我们为什么用 localhost 而不是 IP 地址或者主机名呢?其实这个取决于我们之前是如何限制 LDAP 只有本机才能访问。如果只允许 lookback 接口访问的话,那么自然就只有 localhost 或者 IP 为 127.0.0.1 才能访问了,而不能用真实 IP 或者主机名。
(4) 命令中的 和 必须是同一台机器么?其实是不一定的,它们可以是两台不同的机器。我们在后面的例子里会详细阐述这点。
(5) 好了,我们已经在 LdapClientHost 建立了端口转发,那么这个端口转发可以被其他机器使用么?比如能否新增加一台 LdapClientHost2 来直接连接 LdapClientHost 的 7001 端口?答案是不行的,在主流 SSH 实现中,本地端口转发绑定的是 lookback 接口,这意味着只有 localhost 或者 127.0.0.1 才能使用本机的端口转发 , 其他机器发起的连接只会得到“ connection refused. ”。好在 SSH 同时提供了 GatewayPorts 关键字,我们可以通过指定它与其他机器共享这个本地端口转发。
ssh -g -L ::

1.1 远程转发实例分析

我们来看第二个例子,这次假设由于网络或防火墙的原因我们不能用 SSH 直接从 LdapClientHost 连接到 LDAP 服务器(LdapServertHost),但是反向连接却是被允许的。那此时我们的选择自然就是远程端口转发了。
它的命令格式是:

ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

例如在 LDAP 服务器(LdapServertHost)端执行如下命令:

$ ssh -R 7001:localhost:389 LdapClientHost

图 3. 远程端口转发

和本地端口转发相比,这次的图里,SSH Server 和 SSH Client 的位置对调了一下,但是数据流依然是一样的。我们在 LdapClientHost 上的应用将数据发送到本机的 7001 端口上,而本机的 SSH Server 会将 7001 端口收到的数据加密并转发到 LdapServertHost 的 SSH Client 上。 SSH Client 会解密收到的数据并将之转发到监听的 LDAP 389 端口上,最后再将从 LDAP 返回的数据原路返回以完成整个流程。
看到这里,你是不是会有点糊涂了么?为什么叫本地转发,而有时又叫远程转发?这两者有什么区别?

1.1 本地转发与远程转发的对比与分析

不错,SSH Server,SSH Client,LdapServertHost,LdapClientHost,本地转发,远程转发,这么多的名词的确容易让人糊涂。让我们来分析一下其中的结构吧。首先,SSH 端口转发自然需要 SSH 连接,而 SSH 连接是有方向的,从 SSH Client 到 SSH Server 。而我们的应用也是有方向的,比如需要连接 LDAP Server 时,LDAP Server 自然就是 Server 端,我们应用连接的方向也是从应用的 Client 端连接到应用的 Server 端。如果这两个连接的方向一致,那我们就说它是本地转发。而如果两个方向不一致,我们就说它是远程转发。
我们可以回忆上面的两个例子来做个对照。
本地转发时:
LdapClientHost 同时是应用的客户端,也是 SSH Client,这两个连接都从它指向 LdapServertHost(既是 LDAP 服务端,也是 SSH Server)。
远程转发时:
LdapClientHost 是应用的客户端,但却是 SSH Server ;而 LdapServertHost 是 LDAP 的服务端,但却是 SSH Client 。这样两个连接的方向刚好相反。
另一个方便记忆的方法是,Server 端的端口都是预定义的固定端口(SSH Server 的端口 22,LDAP 的端口 389),而 Client 端的端口都是动态可供我们选择的端口(如上述例子中选用的 7001 端口)。如果 Server 端的两个端口都在同一台机器,Client 端的两个端口都在另一台机器上,那么这就是本地连接;如果这四个端口交叉分布在两个机器上,每台机器各有一个 Server 端端口,一个 Client 端端口,那就是远程连接。
弄清楚了两者的区别之后,再来看看两者的相同之处。如果你所在的环境下,既允许 LdapClientHost 发起 SSH 连接到 LdapServerHost,也允许 LdapServerHost 发起 SSH 连接到 LdapClientHost 。那么这时我们选择本地转发或远程转发都是可以的,能完成一样的功能。
接着让我们来看个进阶版的端口转发。我们之前涉及到的各种连接 / 转发都只涉及到了两台机器,还记得我们在本地转发中提到的一个问题么?本地转发命令中的 和 可以是不同的机器么?

ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

答案是可以的!让我们来看一个涉及到四台机器 (A,B,C,D) 的例子。
图 4. 多主机转发应用

在 SSH Client© 执行下列命令来建立 SSH 连接以及端口转发:

$ ssh -g -L 7001:<B>:389 <D>

然后在我们的应用客户端(A)上配置连接机器(C )的 7001 端口即可。注意我们在命令中指定了“ -g ”参数以保证机器(A)能够使用机器(C)建立的本地端口转发。而另一个值得注意的地方是,在上述连接中,(A)<-> © 以及 (B)<->(D) 之间的连接并不是安全连接,它们之间没有经过 SSH 的加密及解密。如果他们之间的网络并不是值得信赖的网络连接,我们就需要谨慎使用这种连接方式了。

第三部分 其他类型的转发

1.1 动态转发实例分析

恩,动态转发,听上去很酷。当你看到这里时,有没有想过我们已经讨论过了本地转发,远程转发,但是前提都是要求有一个固定的应用服务端的端口号,例如前面例子中的 LDAP 服务端的 389 端口。那如果没有这个端口号怎么办?等等,什么样的应用会没有这个端口号呢?嗯,比如说用浏览器进行 Web 浏览,比如说 MSN 等等。
当我们在一个不安全的 WiFi 环境下上网,用 SSH 动态转发来保护我们的网页浏览及 MSN 信息无疑是十分必要的。让我们先来看一下动态转发的命令格式:

$ ssh -D <local port> <SSH Server>

例如:

$ ssh -D 7001 <SSH Server>

图 5. 动态端口转发

似乎很简单,我们依然选择了 7001 作为本地的端口号,其实在这里 SSH 是创建了一个 SOCKS 代理服务。来看看帮助文档中对 -D 参数的描述:

之后的使用就简单了,我们可以直接使用 localhost:7001 来作为正常的 SOCKS 代理来使用,直接在浏览器或 MSN 上设置即可。在 SSH Client 端无法访问的网站现在也都可以正常浏览。而这里需要值得注意的是,此时 SSH 所包护的范围只包括从浏览器端(SSH Client 端)到 SSH Server 端的连接,并不包含从 SSH Server 端到目标网站的连接。如果后半截连接的安全不能得到充分的保证的话,这种方式仍不是合适的解决方案。

1.1 X 协议转发实例分析

好了,让我们来看最后一个例子 - X 协议转发。
我们日常工作当中,可能会经常会远程登录到 Linux/Unix/Solaris/HP 等机器上去做一些开发或者维护,也经常需要以 GUI 方式运行一些程序,比如要求图形化界面来安装 DB2/WebSphere 等等。这时候通常有两种选择来实现:VNC 或者 X 窗口,让我们来看看后者。
使用 X 窗口通常需要分别安装:X Client 和 X Server 。在本例中我们的 X Client 就是所访问的远程 Linux/Unix/Solaris/HP,而我们的 X Server 则是发起访问的本地机器(例如你面前正在使用的笔记本或台式机)。把 X Client 端的 X 窗口显示在 X Server 端需要先行在 X Client 端指定 X Server 的位置,命令格式如下:

export DISPLAY=<X Server IP>:<display #>.<virtual #>

例如:

export DISPLAY=myDesktop:1.0

然后直接运行 X 应用即可,X 窗口就会自动在我们的本地端打开。
一切运行正常,但是,这时候 IT 部门突然在远程 Linux/Unix/Solaris/HP 前面加了一道防火墙。非常不幸的是,X 协议并不在允许通过的列表之内。怎么办?只能使用 VNC 了么?不,其实只要使用了 SSH 端口转发即可通过,同时也对 X 通讯数据做了加密,真是一举两得。(当然,使用此方法前最好先咨询相关 IT 部门是否符合相应的安全条例,以免造成违规操作。)
建立命令也很简单,直接从本地机器(X Server 端)发起一个如下的 SSH 连接即可:

$ ssh -X <SSH Server>

图 5. X 转发

建立连接之后就可以直接运行远程的 X 应用。注意建立 X 转发之后会自动设置 DISPLAY 环境变量,通常会被设置成localhost:10.0,我们无需也不应该在连接之后再进行修改此环境变量。
一个比较常见的场景是,我们的本地机器是 Windows 操作系统,这时可以选择开源的 XMing 来作为我们的 XServer,而 SSH Client 则可以任意选择了,例如 PuTTY,Cygwin 均可以配置 访问 SSH 的同时建立 X 转发。

第四部分 总结

至此,我们已经完成了本地端口转发,远程端口转发,动态端口转发以及 X 转发的介绍。回顾起来,总的思路是通过将 TCP 连接转发到 SSH 通道上以解决数据加密以及突破防火墙的种种限制。对一些已知端口号的应用,例如 Telnet/LDAP/SMTP,我们可以使用本地端口转发或者远程端口转发来达到目的。动态端口转发则可以实现 SOCKS 代理从而加密以及突破防火墙对 Web 浏览的限制。对于 X 应用,无疑是 X 转发最为适用了。虽然每一部分我们都只是简单的介绍了一下,但如果能灵活应用这些技巧,相信对我们的日常生活 / 工作也是会有所帮助的。

3、免密码登陆远程服务器并执行命令

一、SSH密钥认证方式

远程登录Linux系统采用SSH协议,专为远程登录会话和其他网络服务提供安全性的协议。分为SSH客户端和SSH服务端。支持口令和密钥认证。

密钥认证过程:

SSH客户端可使用ssh-keygen工具生成密钥对,将公钥复制到SSH服务端/home/user/.ssh/authorized_keys文件,当SSH客户端使用私钥(~/.ssh/id_rsa)访问服务端时,服务端会将发来的私有在本机公钥匹配,如果匹配成功,则用公钥加密给客户端,客户端再用私钥进行解密,实现加密传输数据。

1、在SSH客户端创建密钥对

#ssh-keygen -t rsa #一路回车

2、在SSH服务端要远程登录的账户家目录下创建.ssh目录及设置权限

# mkdir /root/.ssh
# chmod 700 /root/.ssh

3、将公钥上传到SSH服务端并重命名为authorized.keys

# scp /root/.ssh/id_rsa.pub root@remote_ip:/root/.ssh/authorized_keys

说明:remote_ip替换远程服务器IP,authorized_keys也可以存放多个id_rsa.pub

4、在SSH服务端启用SSH服务密钥认证

# vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
# service sshd restart  #重启ssh服务

5、在SSH客户端测试

# ssh root@remote_ip

这样就可以免交互登录远程服务器,并可以执行命令:

# ssh root@remote_ip 'df -h'

二、利用expect工具自动输入用户名和密码

Expect是一个免费的编程工具语言,用于实现自动交互,而无需人工干预。
在登录时,就可以用这个工具实现自动输入用户名和密码了!
Linux系统中默认通常没有安装的,需要先安装下再使用。
CentOS安装:yum install expect
Ubuntu安装:sudo apt-get install expect

1、免交互SSH登陆远程服务器,并查看磁盘分区

#!/usr/bin/expect
set ip 192.168.1.156
set pass 123.com
set timeout 30
spawn ssh root@$ip
expect {"(yes/no)" {send "yes\r"; exp_continue}"password:" {send "$pass\r"}
}
expect "root@*"  {send "df -h\r"}
expect "root@*"  {send "exit\r"}
expect eof

2、在Shell脚本中嵌入Expect语法

方法1:使用EOF,将内容段让expect执行

#!/bin/bash
user=root
pass='123'
ip='192.168.1.154'
/usr/bin/expect << EOF
set timeout 30
spawn ssh $user@$ip
expect {"(yes/no)" {send "yes\r"; exp_continue}"password:" {send "$pass\r"}
}
expect "root@*"  {send "df -h\r"}
expect "root@*"  {send "exit\r"}
expect eof
EOF

或者

#!/bin/bash
user=root
pass='123'
ip='192.168.1.154'
expect -c "
spawn ssh $user@$ip
expect {\"(yes/no)\" {send \"yes\r\"; exp_continue}\"password:\" {send \"$pass\r\"; exp_continue}\"root@*\" {send \"df -h\r exit\r\"; exp_continue}}"

方法2:将expect脚本独立出来

免交互登录脚本:

# vi login.exp
#!/usr/bin/expect
set ipaddress [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
if { $argc != 3 } {puts "Usage: expect login.exp ipaddress username password"exit 1
}
set timeout 30
spawn ssh $username@$ipaddress
expect {"(yes/no)" {send "yes\r"; exp_continue}"password:" {send "$password\r"}
}
expect "$username@*"  {send "df -h\r"}
expect "$username@*"  {send "exit\r"}
expect eof

用户信息文件:

# vi user_info
192.168.1.156   user    user
192.168.1.154   root    123.com

Shell脚本:读取用户信息并赋值到变量

# vi expect.sh
#!/bin/bash
for ip in `awk '{print $1}' user_info`
douser=`awk -v I="$ip" '{if(I==$1)print $2}' user_info`pass=`awk -v I="$ip" '{if(I==$1)print $3}' user_info`expect login.exp $ip $user $pass
done

写好这三个文件之后,执行Shell脚本,就会按顺序执行远程服务器信息文件,并查看磁盘分区。

Expect指令说明:

set:可以设置超时,也可以设置变量。
timeout:expect超时等待时间,默认10S。
spawn:执行一个命令。
expect"":匹配输出的内容。
exp_continue:继续执行下面匹配。
\r:可以理解为回车。
argc:统计位置参数数量。[lindexargc:统计位置参数数量。 [lindexargc:统计位置参数数量。[lindexargv 0]:脚本后第一个参数,类似于shell中1,以此类推。puts:打印字符串,类似于Shell的echo。awk−vI="1,以此类推。 puts:打印字符串,类似于Shell的echo。 awk-v I="1,以此类推。puts:打印字符串,类似于Shell的echo。awk−vI="ip":赋值变量。
expect{…}:输入多行记录。
其他指定说明:
timeout-1:永不超时退出。
log_file/var/log/expect.log:记录交互信息。
interact:交互后不退出远程终端,如果加要把expect “root@*” {send “exit\r”}注释掉,如果不加,就直接退出。

参考链接 :

实战 SSH 端口转发 : https://mp.weixin.qq.com/s/ALttwSmT1WB5icUm4HPsTQ

Linux安全运维进阶:SSH 无缝切换远程加密 : https://mp.weixin.qq.com/s/epVQya4DIimtd6fNP0cFwQ

Linux免交互登录远程服务器并执行命令:https://mp.weixin.qq.com/s/B2BVo2vt2lNFbwK7VeUYow

Linux安全运维进阶:SSH常见配置相关推荐

  1. Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

    Linux企业化运维 实验所用系统为Redhat-rhel7.6. 目录 Linux企业化运维 Linux企业化运维--(7)redis服务之redis配置及主从复制.主从自动切换.集群.redis+ ...

  2. linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...

    最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...

  3. 6个linux运维典型问题,Linux运维人员面试常见的问题及答案(二)

    今天小编要跟大家分享的文章是关于Linux运维人员面试常见的问题及答案(二).准备参加Linux运维面试的小伙伴们是否做好了面试准备,今天在这里小编继续为大家分享一些Linux运维人员面试中的常见问题 ...

  4. Linux排查错误的命令,运维必备:常见的Linux系统故障及其排查的方法

    原标题:运维必备:常见的Linux系统故障及其排查的方法 Linux是当前市场上比较常用的.自由开源操作系统,也是云计算运维人员日常工作中的好帮手.不过很多初学云计算的小伙伴面对Linux系统出现的故 ...

  5. 要成为linux网站运维工程师必须要掌握的技能

    我是一名linux运维工程师,确切的说是网站运维工程师,从事linux工作有2年多了,对这方面有一些体会,给新手一点借鉴: 首先说下运维种类:有办公网系统运维(就是网管),有IDC外网运维,外网运维里 ...

  6. 民工哥折腾了2年多的《Linux系统运维指南》终于和大家见面了

    2018年3月,我与张老师就这么在微信上聊了起来,起初我并没有写书的打算,我们之间只是通过讨论.交流的形式聊聊关于出书的方方面面.最终,敌不过张老师超强的专业能力.细致的解说与盛情相邀,我答应张老师写 ...

  7. 【微学堂】线上Linux服务器运维安全策略经验分享

    技术转载:https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&sn=6d403ab447 ...

  8. Linux系统运维与架构设计之Linux概述

    Linux系统运维与架构设计之Linux概述 Linux系统运维与架构设计 1.1 浅谈计算机系统 1.1.1 计算机硬件系统 现代计算机是基于冯·诺依曼体系结构,由运算器.控制器.存储器.输入设备. ...

  9. linux系统运维面试2000多题

    技术问题 1. IDC机房的域名怎么维护的 2. 怎么根据nagios报警做出调整的 3. nagios的状态还有怎么添加监控服务 4. 怎么监控CPU的状态 5. 从时候接linux的?都用过哪些系 ...

最新文章

  1. SecureCRT使用本地公钥 SSH 免密码登录Linux
  2. java.nio.Buffer flip()方法
  3. 在datatable中,在指定位置插入列
  4. P1282-多米诺骨牌【dp,背包】
  5. LeetCode 444. 序列重建(拓扑排序)
  6. hibernate 简单笔记(一)
  7. 用 Python 爬取 4332 条数据,揭秘甜咸肉粽的江湖!
  8. Java回调网址_极光短信- 回调接口 - 极光文档
  9. 中国首个5G全覆盖产研一体化创新园启动
  10. java递归求和_java递归算法求和有哪些方式实现?
  11. 【解决】当前操作环境不支持支付宝控件/一直处于“正在安装证书“中
  12. 大文件传输的三种方式
  13. 【微信小程序系列:三】前端实现微信支付与代扣签约
  14. symbian android,Symbian^3对比
  15. Qt基于FFmpeg读取摄像头并进行H264编码
  16. 如何将PDF批量转成JPG?
  17. 天地不仁,以万物为刍狗No.42
  18. Flash, Flex, Air, Flashplayer之间的相互关系是什么?
  19. 7s巡检管理系统是什么_基于微信的巡检系统7S巡检管理系统
  20. 解决iPhone部分机型下面有小黑条遮挡问题

热门文章

  1. Python ln_虚拟机中单机Spark (Python版)安装
  2. c++指针详解_c语言详解sizeof
  3. 为什么微博用jsoup爬取不出来东西_用Python爬取历年基金数据
  4. SCVMM 2012 R2运维管理十一之:添加Hyper-v群集
  5. C# 利用SQLite对.DB和.logdb加密和解密和SQLite创建数据库
  6. 第二章 Javac编译原理
  7. hdu 2255+hdu 3395
  8. go语言web编程,初学点滴记录1
  9. SharePoint 2010 自定义Ribbon实现文档批量下载为Zip文件
  10. C++和JNI的数据转换