2019年10月

我们有时可能需要在远程机器上运行一些命令。如果只是偶尔进行的操作,要实现这个目的,可以登录到远程系统上直接执行命令。但是每次都这么做的话,就有点烦人了。既然如此,有没有摆脱这种麻烦操作的更佳方案?

是的,你可以从你本地系统上执行这些操作,而不用登录到远程系统上。这有什么好处吗?毫无疑问。这会为你节省很多好时光。

这是怎么实现的?SSH 允许你无需登录到远程计算机就可以在它上面运行命令。

通用语法如下所示:

$ ssh [用户名]@[远程主机名或 IP] [命令或脚本]

1) 如何通过 SSH 在远程 Linux 系统上运行命令

下面的例子允许用户通过 ssh 在远程 Linux 机器上运行 df 命令

$ ssh [email protected] df -h

 Filesystem               Size  Used Avail Use% Mounted on
 /dev/mapper/centos-root   27G  4.4G   23G  17% /
 devtmpfs                 903M     0  903M   0% /dev
 tmpfs                    920M     0  920M   0% /dev/shm
 tmpfs                    920M  9.3M  910M   2% /run
 tmpfs                    920M     0  920M   0% /sys/fs/cgroup
 /dev/sda1               1014M  179M  836M  18% /boot
 tmpfs                    184M  8.0K  184M   1% /run/user/42
 tmpfs                    184M     0  184M   0% /run/user/1000

2) 如何通过 SSH 在远程 Linux 系统上运行多条命令

下面的例子允许用户通过 ssh 在远程 Linux 机器上一次运行多条命令。

同时在远程 Linux 系统上运行 uptime 命令和 free 命令。

$ ssh [email protected] "uptime && free -m"

 23:05:10 up 10 min,  0 users,  load average: 0.00, 0.03, 0.03

              total       used       free     shared    buffers     cached
 Mem:          1878        432       1445          1        100        134
 -/+ buffers/cache:        197       1680
 Swap:         3071          0       3071

3) 如何通过 SSH 在远程 Linux 系统上运行带 sudo 权限的命令

下面的例子允许用户通过 ssh 在远程 Linux 机器上运行带有 sudo 权限fdisk 命令。

普通用户不允许执行系统二进制(/usr/sbin/)目录下提供的命令。用户需要 root 权限来运行它。

所以你需要 root 权限,好在 Linux 系统上运行 fdisk 命令which 命令返回给定命令的完整可执行路径。

$ which fdisk
 /usr/sbin/fdisk
$ ssh -t [email protected] "sudo fdisk -l"
 [sudo] password for daygeek:

 Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk label type: dos
 Disk identifier: 0x000bf685

 Device Boot      Start         End      Blocks   Id  System
 /dev/sda1   *        2048     2099199     1048576   83  Linux
 /dev/sda2         2099200    62914559    30407680   8e  Linux LVM

 Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes

 Disk /dev/mapper/centos-root: 29.0 GB, 28982640640 bytes, 56606720 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes

 Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes

 Connection to centos7.2daygeek.com closed.

4) 如何通过 SSH 在远程 Linux 系统上运行带 sudo 权限的服务控制命令

下面的例子允许用户通过 ssh 在远程 Linux 机器上运行带有 sudo 权限的服务控制命令。

$ ssh -t [email protected] "sudo systemctl restart httpd"

 [sudo] password for daygeek:
 Connection to centos7.2daygeek.com closed.

5) 如何通过非标准端口 SSH 在远程 Linux 系统上运行命令

下面的例子允许用户通过 ssh 在使用了非标准端口的远程 Linux 机器上运行 hostnamectl 命令

$ ssh -p 2200 [email protected] hostnamectl

    Static hostname: Ubuntu18.2daygeek.com
          Icon name: computer-vm
            Chassis: vm
         Machine ID: 27f6c2febda84dc881f28fd145077187
            Boot ID: bbeccdf932be41ddb5deae9e5f15183d
     Virtualization: oracle
   Operating System: Ubuntu 18.04.2 LTS
             Kernel: Linux 4.15.0-60-generic
       Architecture: x86-64

6) 如何将远程系统的输出保存到本地系统

下面的例子允许用户通过 ssh 在远程 Linux 机器上运行 top 命令,并将输出保存到本地系统。

$ ssh [email protected] "top -bc | head -n 35" > /tmp/top-output.txt
cat /tmp/top-output.txt

 top - 01:13:11 up 18 min,  1 user,  load average: 0.01, 0.05, 0.10
 Tasks: 168 total,   1 running, 167 sleeping,   0 stopped,   0 zombie
 %Cpu(s):  0.0 us,  6.2 sy,  0.0 ni, 93.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
 KiB Mem :  1882300 total,  1176324 free,   342392 used,   363584 buff/cache
 KiB Swap:  2097148 total,  2097148 free,        0 used.  1348140 avail Mem
 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
  4943 daygeek   20   0  162052   2248   1612 R 10.0  0.1   0:00.07 top -bc
     1 root      20   0  128276   6936   4204 S  0.0  0.4   0:03.08 /usr/lib/sy+
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [kthreadd]
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.25 [ksoftirqd/+
     4 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [kworker/0:+
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kworker/0:+
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 [migration/+
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [rcu_bh]
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.77 [rcu_sched]
    10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [lru-add-dr+
    11 root      rt   0       0      0      0 S  0.0  0.0   0:00.01 [watchdog/0]
    13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [kdevtmpfs]
    14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [netns]
    15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 [khungtaskd]
    16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [writeback]
    17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [kintegrity+
    18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [bioset]
    19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [bioset]
    20 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 [bioset]

或者你也可以使用以下格式在远程系统上运行多条命令:

$ ssh [email protected] << EOF
hostnamectl
free -m
grep daygeek /etc/passwd
EOF

上面命令的输出如下:

Pseudo-terminal will not be allocated because stdin is not a terminal.
    Static hostname: CentOS7.2daygeek.com
          Icon name: computer-vm
            Chassis: vm
         Machine ID: 002f47b82af248f5be1d67b67e03514c
            Boot ID: dca9a1ba06374d7d96678f9461752482
     Virtualization: kvm
   Operating System: CentOS Linux 7 (Core)
        CPE OS Name: cpe:/o:centos:centos:7
             Kernel: Linux 3.10.0-957.el7.x86_64
       Architecture: x86-64

               total        used        free      shared  buff/cache   available
 Mem:           1838         335        1146          11         355        1314
 Swap:          2047           0        2047

 daygeek:x:1000:1000:2daygeek:/home/daygeek:/bin/bash

7) 如何在远程系统上运行本地 Bash 脚本

下面的例子允许用户通过 ssh 在远程 Linux 机器上运行本地 bash 脚本 remote-test.sh

创建一个 shell 脚本并执行它。

$ vi /tmp/remote-test.sh

#!/bin/bash
#Name: remote-test.sh
#--------------------
 uptime
 free -m
 df -h
 uname -a
 hostnamectl

上面命令的输出如下:

$ ssh [email protected] 'bash -s' < /tmp/remote-test.sh

  01:17:09 up 22 min,  1 user,  load average: 0.00, 0.02, 0.08

               total        used        free      shared  buff/cache   available
 Mem:           1838         333        1148          11         355        1316
 Swap:          2047           0        2047

 Filesystem               Size  Used Avail Use% Mounted on
 /dev/mapper/centos-root   27G  4.4G   23G  17% /
 devtmpfs                 903M     0  903M   0% /dev
 tmpfs                    920M     0  920M   0% /dev/shm
 tmpfs                    920M  9.3M  910M   2% /run
 tmpfs                    920M     0  920M   0% /sys/fs/cgroup
 /dev/sda1               1014M  179M  836M  18% /boot
 tmpfs                    184M   12K  184M   1% /run/user/42
 tmpfs                    184M     0  184M   0% /run/user/1000

 Linux CentOS7.2daygeek.com 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

    Static hostname: CentOS7.2daygeek.com
          Icon name: computer-vm
            Chassis: vm
         Machine ID: 002f47b82af248f5be1d67b67e03514c
            Boot ID: dca9a1ba06374d7d96678f9461752482
     Virtualization: kvm
   Operating System: CentOS Linux 7 (Core)
        CPE OS Name: cpe:/o:centos:centos:7
             Kernel: Linux 3.10.0-957.el7.x86_64
       Architecture: x86-64

或者也可以使用管道。如果你觉得输出不太好看,再做点修改让它更优雅些。

$ vi /tmp/remote-test-1.sh

#!/bin/bash
#Name: remote-test.sh
 echo "---------System Uptime--------------------------------------------"
 uptime
 echo -e "\n"
 echo "---------Memory Usage---------------------------------------------"
 free -m
 echo -e "\n"
 echo "---------Disk Usage-----------------------------------------------"
 df -h
 echo -e "\n"
 echo "---------Kernel Version-------------------------------------------"
 uname -a
 echo -e "\n"
 echo "---------HostName Info--------------------------------------------"
 hostnamectl
 echo "------------------------------------------------------------------"

上面脚本的输出如下:

$ cat /tmp/remote-test.sh  | ssh [email protected]
 Pseudo-terminal will not be allocated because stdin is not a terminal.
 ---------System Uptime--------------------------------------------
  03:14:09 up  2:19,  1 user,  load average: 0.00, 0.01, 0.05

 ---------Memory Usage---------------------------------------------
               total        used        free      shared  buff/cache   available
 Mem:           1838         376        1063          11         398        1253
 Swap:          2047           0        2047

 ---------Disk Usage-----------------------------------------------
 Filesystem               Size  Used Avail Use% Mounted on
 /dev/mapper/centos-root   27G  4.4G   23G  17% /
 devtmpfs                 903M     0  903M   0% /dev
 tmpfs                    920M     0  920M   0% /dev/shm
 tmpfs                    920M  9.3M  910M   2% /run
 tmpfs                    920M     0  920M   0% /sys/fs/cgroup
 /dev/sda1               1014M  179M  836M  18% /boot
 tmpfs                    184M   12K  184M   1% /run/user/42
 tmpfs                    184M     0  184M   0% /run/user/1000
 tmpfs                    184M     0  184M   0% /run/user/0

 ---------Kernel Version-------------------------------------------
 Linux CentOS7.2daygeek.com 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

 ---------HostName Info--------------------------------------------
    Static hostname: CentOS7.2daygeek.com
          Icon name: computer-vm
            Chassis: vm
         Machine ID: 002f47b82af248f5be1d67b67e03514c
            Boot ID: dca9a1ba06374d7d96678f9461752482
     Virtualization: kvm
   Operating System: CentOS Linux 7 (Core)
        CPE OS Name: cpe:/o:centos:centos:7
             Kernel: Linux 3.10.0-957.el7.x86_64
       Architecture: x86-64

8) 如何同时在多个远程系统上运行多条指令

下面的 bash 脚本允许用户同时在多个远程系统上运行多条指令。使用简单的 for 循环实现。

为了实现这个目的,你可以尝试 PSSH 命令ClusterShell 命令DSH 命令

$ vi /tmp/multiple-host.sh

 for host in CentOS7.2daygeek.com CentOS6.2daygeek.com
 do
    ssh daygeek@${host} "uname -a;uptime;date;w"
 done

上面脚本的输出如下:

$ sh multiple-host.sh

 Linux CentOS7.2daygeek.com 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

  01:33:57 up 39 min,  1 user,  load average: 0.07, 0.06, 0.06

 Wed Sep 25 01:33:57 CDT 2019

  01:33:57 up 39 min,  1 user,  load average: 0.07, 0.06, 0.06
 USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
 daygeek  pts/0    192.168.1.6      01:08   23:25   0.06s  0.06s -bash

 Linux CentOS6.2daygeek.com 2.6.32-754.el6.x86_64 #1 SMP Tue Jun 19 21:26:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

  23:33:58 up 39 min,  0 users,  load average: 0.00, 0.00, 0.00

 Tue Sep 24 23:33:58 MST 2019

  23:33:58 up 39 min,  0 users,  load average: 0.00, 0.00, 0.00
 USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT

9) 如何使用 sshpass 命令添加一个密码

如果你觉得每次输入密码很麻烦,我建议你视你的需求选择以下方法中的一项来解决这个问题。

如果你经常进行类似的操作,我建议你设置 免密码认证,因为它是标准且永久的解决方案。

如果你一个月只是执行几次这些任务,我推荐你使用 sshpass 工具。只需要使用 -p 参数选项提供你的密码即可。

$ sshpass -p '在这里输入你的密码' ssh -p 2200 [email protected] ip a

 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
     inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
 2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
     link/ether 08:00:27:18:90:7f brd ff:ff:ff:ff:ff:ff
     inet 192.168.1.12/24 brd 192.168.1.255 scope global dynamic eth0
        valid_lft 86145sec preferred_lft 86145sec
     inet6 fe80::a00:27ff:fe18:907f/64 scope link tentative dadfailed
        valid_lft forever preferred_lft forever

via: https://www.2daygeek.com/execute-run-linux-commands-remote-system-over-ssh/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:alim0x 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

继 RHEL 8 发布之后,CentOS 社区也发布了让人期待已久的 CentOS 8,并发布了两种模式:

  • CentOS stream:滚动发布的 Linux 发行版,适用于需要频繁更新的开发者
  • CentOS:类似 RHEL 8 的稳定操作系统,系统管理员可以用其部署或配置服务和应用

在这篇文章中,我们会使用图解的方式演示 CentOS 8 的安装方法。

CentOS 8 的新特性

  • DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的
  • 使用网络管理器(nmclinmtui)进行网络配置,移除了网络脚本
  • 使用 Podman 进行容器管理
  • 引入了两个新的包仓库:BaseOS 和 AppStream
  • 使用 Cockpit 作为默认的系统管理工具
  • 默认使用 Wayland 作为显示服务器
  • iptables 将被 nftables 取代
  • 使用 Linux 内核 4.18
  • 提供 PHP 7.2、Python 3.6、Ansible 2.8、VIM 8.0 和 Squid 4

CentOS 8 所需的最低硬件配置:

  • 2 GB RAM
  • 64 位 x86 架构、2 GHz 或以上的 CPU
  • 20 GB 硬盘空间

CentOS 8 安装图解

第一步:下载 CentOS 8 ISO 文件

在 CentOS 官方网站 https://www.centos.org/download/ 下载 CentOS 8 ISO 文件。

第二步: 创建 CentOS 8 启动介质(USB 或 DVD)

下载 CentOS 8 ISO 文件之后,将 ISO 文件烧录到 USB 移动硬盘或 DVD 光盘中,作为启动介质。

然后重启系统,在 BIOS 中设置为从上面烧录好的启动介质启动。

第三步:选择“安装 CentOS Linux 8.0”选项

当系统从 CentOS 8 ISO 启动介质启动之后,就可以看到以下这个界面。选择“Install CentOS Linux 8.0”(安装 CentOS Linux 8.0)选项并按回车。

Choose-Install-CentOS8

第四步:选择偏好语言

选择想要在 CentOS 8 安装过程中使用的语言,然后继续。

Select-Language-CentOS8-Installation

第五步:准备安装 CentOS 8

这一步我们会配置以下内容:

  • 键盘布局
  • 日期和时间
  • 安装来源
  • 软件选择
  • 安装目标
  • Kdump

Installation-Summary-CentOS8

如上图所示,安装向导已经自动提供了“ 键盘布局 Keyboard ”、“ 时间和日期 Time & Date ”、“ 安装来源 Installation Source ”和“ 软件选择 Software Selection ”的选项。

如果你需要修改以上设置,点击对应的图标就可以了。例如修改系统的时间和日期,只需要点击“ 时间和日期 Time & Date ”,选择正确的时区,然后点击“ 完成 Done ”即可。

TimeZone-CentOS8-Installation

在软件选择选项中选择安装的模式。例如“ 包含图形界面 Server with GUI ”选项会在安装后的系统中提供图形界面,而如果想安装尽可能少的额外软件,可以选择“ 最小化安装 Minimal Install ”。

Software-Selection-CentOS8-Installation

这里我们选择“ 包含图形界面 Server with GUI ”,点击“ 完成 Done ”。

Kdump 功能默认是开启的。尽管这是一个强烈建议开启的功能,但也可以点击对应的图标将其关闭。

如果想要在安装过程中对网络进行配置,可以点击“ 网络与主机名 Network & Host Name ”选项。

Networking-During-CentOS8-Installation

如果系统连接到启用了 DHCP 功能的调制解调器上,就会在启动网络接口的时候自动获取一个 IP 地址。如果需要配置静态 IP,点击“ 配置 Configure ”并指定 IP 的相关信息。除此以外我们还将主机名设置为 “linuxtechi.com”。

完成网络配置后,点击“ 完成 Done ”。

最后我们要配置“ 安装目标 Installation Destination ”,指定 CentOS 8 将要安装到哪一个硬盘,以及相关的分区方式。

Installation-Destination-Custom-CentOS8

点击“ 完成 Done ”。

如图所示,我为 CentOS 8 分配了 40 GB 的硬盘空间。有两种分区方案可供选择:如果由安装向导进行自动分区,可以从“ 存储配置 Storage Configuration ”中选择“ 自动 Automatic ”选项;如果想要自己手动进行分区,可以选择“ 自定义 Custom ”选项。

在这里我们选择“ 自定义 Custom ”选项,并按照以下的方式创建基于 LVM 的分区:

  • /boot – 2 GB (ext4 文件系统)
  • / – 12 GB (xfs 文件系统)
  • /home – 20 GB (xfs 文件系统)
  • /tmp – 5 GB (xfs 文件系统)
  • Swap – 1 GB (xfs 文件系统)

首先创建 /boot 标准分区,设置大小为 2GB,如下图所示:

boot-partition-CentOS8-Installation

点击“ 添加挂载点 Add mount point ”。

再创建第二个分区 /,并设置大小为 12GB。点击加号,指定挂载点和分区大小,点击“ 添加挂载点 Add mount point ”即可。

slash-root-partition-centos8-installation

然后在页面上将 / 分区的分区类型从标准更改为 LVM,并点击“ 更新设置 Update Settings ”。

Change-Partition-Type-CentOS8

如上图所示,安装向导已经自动创建了一个卷组。如果想要更改卷组的名称,只需要点击“ 卷组 Volume Group ”标签页中的“ 修改 Modify ”选项。

同样地,创建 /home 分区和 /tmp 分区,分别将大小设置为 20GB 和 5GB,并设置分区类型为 LVM。

home-partition-CentOS8-Installation

tmp-partition-centos8-installation

最后创建 交换分区 Swap Partition

Swap-Partition-CentOS8-Installation

点击“ 添加挂载点 Add mount point ”。

在完成所有分区设置后,点击“ 完成 Done ”。

Choose-Done-after-manual-partition-centos8

在下一个界面,点击“ 应用更改 Accept changes ”,以上做的更改就会写入到硬盘中。

Accept-changes-CentOS8-Installation

第六步:选择“开始安装”

完成上述的所有更改后,回到先前的安装概览界面,点击“ 开始安装 Begin Installation ”以开始安装 CentOS 8。

Begin-Installation-CentOS8

下面这个界面表示安装过程正在进行中。

Installation-progress-centos8

要设置 root 用户的口令,只需要点击 “ root 口令 Root Password ”选项,输入一个口令,然后点击“ 创建用户 User Creation ”选项创建一个本地用户。

Root-Password-CentOS8-Installation

填写新创建的用户的详细信息。

Local-User-Details-CentOS8

在安装完成后,安装向导会提示重启系统。

CentOS8-Installation-Progress

第七步:完成安装并重启系统

安装完成后要重启系统。只需点击“ 重启 Reboot ”按钮。

Installation-Completed-CentOS8

注意:重启完成后,记得要把安装介质断开,并将 BIOS 的启动介质设置为硬盘。

第八步:启动新安装的 CentOS 8 并接受许可协议

在 GRUB 引导菜单中,选择 CentOS 8 进行启动。

Grub-Boot-CentOS8

同意 CentOS 8 的许可证,点击“ 完成 Done ”。

Accept-License-CentOS8-Installation

在下一个界面,点击“ 完成配置 Finish Configuration ”。

Finish-Configuration-CentOS8-Installation

第九步:配置完成后登录

同意 CentOS 8 的许可证以及完成配置之后,会来到登录界面。

Login-screen-CentOS8

使用刚才创建的用户以及对应的口令登录,按照提示进行操作,就可以看到以下界面。

CentOS8-Ready-Use-Screen

点击“ 开始使用 CentOS Linux Start Using CentOS Linux ”。

Desktop-Screen-CentOS8

以上就是 CentOS 8 的安装过程,至此我们已经完成了 CentOS 8 的安装。

欢迎给我们发送评论。


via: https://www.linuxtechi.com/centos-8-installation-guide-screenshots/

作者:Pradeep Kumar 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

云原生是什么?

技术圈总是在不停地蹦各种新名词。也不知道从什么时候开始,人们慢慢不怎么提“云计算”这个名词了,而是频繁提到一个新名词“云原生”,好像不这么提就不足以体现云计算原住民的身份。不过,要真的问什么是“云原生”,其实很多人都说不太清楚。随着云原生生态如火如荼的发展,甚至连 CNCF 官方都觉得有必要专门做个定义出来:

前一段时间,我在云栖大会上见到了阿里云的李响,就有人问他,“怎么理解‘云原生’?”作为 CNCF 的技术监督委员会成员的李响,以他的角度对此作了阐释:

“我觉得云原生本身实际上就是比较泛的概念,它最终的目标就是利用云上的资源、云上的服务来重构软件开发以及运行时的生命周期。简而言之就是怎么更好利用云。……随着云的发展,云原生本身也会有一些变化,大家接受云原生的理念和实现云原生的情况也会有变化。……我觉得不用太把云原生本身在一个框框里圈定,它更多还是一个核心的概念——更好地利用云释放云的红利,产生相关的技术让大家去实践。”

在我看来,虽然现在云原生的概念的内涵和外延都在不断的变化当中,但是不可否认的是,云计算生态已经从最初的巨石应用、刚性的分布式计算逐渐演变到原生地基于云计算环境进行设计、开发、部署、运维和弹性伸缩。可以说,云原生重新定义了云计算。

借助于云原生技术,一个计算系统可以很便捷的从一个环境中迁移至另外一个环境当中,而这在之前几年,几乎还是不可想象的。就这个场景,阿里云举了一个例子:比如像三维家,他们在上海云栖大会上宣布了全站上云的消息,因为他们已经应用了云原生的方式,仅花了三天把全部业务迁到阿里云上。而在迁移之后,三维家现在可以利用云原生的方式可以充分发挥云计算的弹性,三分钟之内就可以创建 100 个神龙节点去应对突发的业务需求,极大提升企业 IT 的灵活性,并且降低了 IT 成本。三维家表示,“阿里云的容器生态系统打造得非常完善,从监控、日志、服务暴露、应用拓扑、伸缩扩容方面能够做的更加灵活;基础设施的建设和维护稳定性交给阿里云,目前没有出现过问题。”

云原生进化

今年我参加云栖大会,有一个明显的感受就是,阿里云在不断的大声谈论云原生。事实上阿里云早已是云原生计算基金会的成员(现在是白金成员),也在这个领域耕耘良久,但是今年,无论是多到你参加不过来的各种主题演讲,还是各种产品和服务的消息,都在不断的讲,云原生、云原生……

在过去大家更多是把互联网和移动互联网的应用,大部分是无状态应用部署在容器平台之上,今年越来越多的企业开始把有状态的应用、交易类的应用以原生化的方式进行交付,进行自动化的运维。

这次云栖大会上阿里云还发布了 ACK 2.0。ACK 是阿里云容器服务 Kubernetes 版,它提供了高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理,简化了集群的搭建和扩容等工作,整合了阿里云虚拟化、存储、网络和安全能力,以打造云端最佳的 Kubernetes 容器化应用运行环境。

关于阿里云容器服务,阿里云的易立说,从 2015 年底公测、2016 年中正式上线到现在的 4 年时间发展非常快,现在已经覆盖了阿里云全球 20 个地域,支撑了国内外数千家客户的生态系统。同时容器产品在持续保持增长,过去 3 年都能保持 400% 以上的增长速度,现在一个月下载次数超过 3 亿次。今年在 Forrester 全球公共云容器平台的评测里面,阿里云是国内排名第一,在 Gartner 报告也唯一入选公共云容器平台竞争格局。

阿里云容器服务优化整合了阿里云整体的计算、存储、网络、安全等核心能力。

比如说计算,不但能够支持强大虚拟机,像神龙这样的裸金属服务,还有异构计算的 CPU、GPU,未来也会包括云栖大会当天发布的含光芯片,通过容器的高效调度能够让 GPU 的利用率提升了 5 倍,而且容器产品能充分把计算资源弹性发挥出来,可以实现分钟级千节点的弹性伸缩,这对客户来说是非常重要的。

而在容器网络方面,它和阿里云的虚拟化网络进行了优化集成,可以实现原生网络一样的性能,与社区的 VXLAN 实现相比提升了 20% 性能。

在存储方面支持阿里云所有的存储产品,包括块存储、网络存储、对象存储等。针对容器场景进行了很多创新,比如说容器高密度部署时容器之间会对 I/O 进行争抢,通过跟操作系统团队进行深入合作,实现了更好的存储 I/O 隔离。另外,还实现了透明、高效的存储缓存,可以低成本支持像高性能计算和AI场景下大数据吞吐量的需求。

本次云栖大会上阿里云发布的 ACK 2.0 面向云原生进化,最重要的是它为整个企业上云奠定了一个新的基石。首先是容器服务全球化的部署,利用在阿里巴巴集团的大规模生产实践沉淀,建立了这样的基础设施。其次,云边端一体化可以实现边缘节点极大降低访问的延迟降低 75%。第三,可以让客户把他的私有云和云端利用 Kubernetes 进行统一管理,应用发布效率可以提升三倍,另外,还提供了全链路的安全架构,对安全风险进行监控。

对于云原生的发展,作为阿里云内部基础设施负责人的李响,在帮助阿里经济体以更为云原生的方式上云,在推动阿里经济体采用 Kubernetes、Service Mesh、Serverless 这些技术。他谈到:

“阿里和蚂蚁有着最大的 Kubernetes 集群,我们对 Kubernetes 上游拓展性、功能性是最大的贡献者之一,我们今年尝试落地Service Mesh,之前大家对 Service Mesh 的疑问是,它能不能应对一个复杂的场景,尤其和传统的微服务体系对接的场景。在阿里巴巴内部要验证这件事情,我们要告诉大家可以做到,而且我们要告诉大家怎么做到,后续会提供解决方案让大家去做这件事情。

第二,大家会思考 Service Mesh 的规模性是不是足够,阿里巴巴其实有巨大规模性的挑战,我们也会解决 Service Mesh 规模性的问题。我们认为阿里巴巴能够使用 Service Mesh,我想世界上 99% 的公司都可以使用 Service Mesh, 而不会遇到它的规模性问题。

第三,Service Mesh 是不是会影响核心链路上的性能问题,会不会影响在核心时刻的性能。我们也会在双 11 这种洪峰流量,对流量要求极高的情况下去验证 Service Mesh,使用 Service Mesh,去打磨 Service Mesh,所有打磨的东西会反馈到上流,让用户、开发者享受到这种红利。

第四,阿里巴巴通过这些事情培养出一批靠谱的工程师,我们有非常强的兜底能力,当用户遇到任何问题,阿里巴巴都能帮你解决问题,阿里巴巴真的是运营这套体系的,有这个生产实践的经验。

阿里巴巴真正把‘云原生’新的概念,在我们认为正确的方向进行落地、进行打磨,最后交付给客户。所有这些东西,当我们说阿里巴巴云上有这样的产品,一定是可靠的,一定是稳定的。”

容器安全是重点

当然我们也看到企业客户在使用云原生技术过程中面对几个挑战,第一个挑战就是安全。

安全是企业上云的首要关注。云原生加剧了这个挑战,云原生平台高密度、高动态部署使得遭受攻击可能性增加,而且一旦遭受攻击,用户不知道是谁受到攻击,也没有办法实时应对。

安全是体系性的东西,永远在最弱的一环去攻破整个企业的安全体系。阿里云容器服务实现了非常全面的端到端的云原生安全的架构,包括基础设施的安全,跟阿里云的云安全基础设施紧密基础,利用 RAM 进行认证、鉴权和审计,支持存储的 BYOK 加密等,提供了一个安全的云基础设施。

同时,在应用的生命周期里面用了安全的镜像检测,上线之前要进行扫描,上线之后会进行实时的安全检测。还有运行时的安全,因为安全的风险无处不在,一旦出现了安全问题必须第一时间对它进行监控、报警。

对于企业来讲,大量采用容器之后面临的挑战之一就是安全隔离。比如说一台机器上要混布多种类型的应用,但是有些像金融交易的应用,安全级别敏感性会很高,不希望受到其他应用的攻击和干扰。另外企业除了自己的应用还要部署第三方应用,这个过程中对一些不可信的应用要进行安全的隔离,阿里云引入了安全沙箱一系列的技术。传统的容器 RunC 用是共享内核的机制,很高效,但是安全隔离做得不好,现在可以利用安全沙箱可以进行安全隔离。

在这方面阿里云有一些差异化的优势:首先就是对它进行大量的性能优化,比如说它的网络跟原生的进程没有任何区别,网络性能非常好。整体能够达到 90% 的原生性能,对用户来讲可以获得非常好的安全性,同时对性能损耗是可以接受的。另外,能够让用户自主选择是 RunC 还是安全沙箱,两种容器运行时用户体验是完全一致的,用户可以根据自己对业务需求来选择合适的容器应用技术。

在安全容器领域有几个重要的项目,如 Google 的 gVisor,以及已经属于蚂蚁金服旗下的 Kata 容器项目等,不过和易立的沟通当中,我了解到阿里云容器服务的安全容器所采用的技术并非照搬 Kata 容器技术,而是集成了目前主流的安全容器项目,加以自身的创新而成的。阿里经济体实际上在容器安全方面投入非常大,包括 Kata,还有其他几种技术。他们与蚂蚁金服、阿里的操作系统团队合作一起来提供这样商业化安全容器的实现。这次发布的安全沙箱容器底层技术针对阿里云进行了大量优化,跟 Kata 技术有些类似,但是里面有很多部分不同,性能也做了大量的优化。

现在提供的是基于虚拟化隔离的安全技术,后续会陆续提供其他的技术能力,它们的隔离级别和适用场景是不同的,用户只要去选择就好了,在保证用户体验是一致的基础上,对用户是透明的。

结语

我们看到,阿里云正在云原生的路上狂奔,将各个产品、服务都押宝在元原生的领域上。最后,让我们用李响的一段话来结束这篇文章:“新兴的应用,或者是新兴的领域,我们建议你使用容器轻量级自动化平台,现在我们阿里云、ACK 都是朝着这种模式跟大家宣导的。我们要去帮助开发者,引导开发者从非原生的体系向云原生体系去转移,我觉得这条道路非常重要,这也是阿里云的责任,带动整个国内的基础设施,带动国内云原生体系发展,我们要去承担这件事情。”

Tuxedo 让买一台开箱即用的 Linux 笔记本变得容易。

最近,我开始使用我买的 Linux 笔记本计算机 Tuxedo Book BC1507。十年前,如果有人告诉我,十年后我可以从 System76SlimbookTuxedo 等公司购买到高质量的“企鹅就绪”的笔记本电脑。我可能会发笑。好吧,现在我也在笑,但是很开心!

除了为免费/自由开源软件(FLOSS)设计计算机之外,这三家公司最近宣布都试图通过切换到Coreboot来消除专有的 BIOS 软件。

买一台

Tuxedo Computers 是一家德国公司,生产支持 Linux 的笔记本电脑。实际上,如果你要使用其他的操作系统,则它的价格会更高。

购买他们的计算机非常容易。Tuxedo 提供了许多付款方式:不仅包括信用卡,而且还包括 PayPal 甚至银行转帐(LCTT 译注:我们需要支付宝和微信支付……此外,要国际配送,还需要支付运输费和清关费用等)。只需在 Tuxedo 的网页上填写银行转帐表格,公司就会给你发送银行信息。

Tuxedo 可以按需构建每台计算机,只需选择基本模型并浏览下拉菜单以选择不同的组件,即可轻松准确地选择所需内容。页面上有很多信息可以指导你进行购买。

如果你选择的 Linux 发行版与推荐的发行版不同,则 Tuxedo 会进行“网络安装”,因此请准备好网络电缆以完成安装,也可以将你首选的镜像文件刻录到 USB 盘上。我通过外部 DVD 阅读器来安装刻录了 openSUSE Leap 15.1 安装程序的 DVD,但是你可用你自己的方式。

我选择的型号最多可以容纳两个磁盘:一个 SSD,另一个可以是 SSD 或常规硬盘。由于已经超出了我的预算,因此我决定选择传统的 1TB 磁盘并将 RAM 增加到 16GB。该处理器是具有四个内核的第八代 i5。我选择了背光西班牙语键盘、1920×1080/96dpi 屏幕和 SD 卡读卡器。总而言之,这是一个很棒的系统。

如果你对默认的英语或德语键盘感觉满意,甚至可以要求在 Meta 键上印上一个企鹅图标!我需要的西班牙语键盘则不提供此选项。

收货并开箱使用

付款完成后仅六个工作日,完好包装的计算机就十分安全地到达了我家。打开计算机包装并解锁电池后,我准备好开始浪了。

 title=

我的(物理)桌面上的新玩具。

该电脑的设计确实很棒,而且感觉扎实。即使此型号的外壳不是铝制的(LCTT 译注:他们有更好看的铝制外壳的型号),也可以保持凉爽。风扇真的很安静,气流像许多其他笔记本电脑一样导向后边缘,而不是流向侧面。电池可提供数小时的续航时间。BIOS 中的一个名为 FlexiCharger 的选项会在达到一定百分比后停止为电池充电,因此在插入电源长时间工作时,无需卸下电池。

键盘真的很舒适,而且非常安静。甚至触摸板按键也很安静!另外,你可以轻松调整背光键盘上的光强度。

最后,很容易访问笔记本电脑中的每个组件,因此可以毫无问题地对计算机进行更新或维修。Tuxedo 甚至送了几个备用螺丝!

结语

经过一个月的频繁使用,我对该系统感到非常满意。它完全满足了我的要求,并且一切都很完美。

因为它们通常是高端系统,所以包含 Linux 的计算机往往比较昂贵。如果你将 Tuxedo 或 Slimbook 电脑的价格与更知名品牌的类似规格的价格进行比较,价格相差无几。如果你想要一台使用自由软件的强大系统,请毫不犹豫地支持这些公司:他们所提供的物有所值。

请在评论中让我们知道你在 Tuxedo 和其他“企鹅友好”公司的经历。


本文基于 Ricardo 的博客 From Mind to Type 上发表的“ 我的新企鹅笔记本电脑:Tuxedo-Book-BC1507”。


via: https://opensource.com/article/19/7/linux-laptop

作者:Ricardo Berlasso 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用这个基于 scrcpy 的开源应用从你的电脑上访问你的安卓设备。

在未来,你所需的一切信息皆触手可及,并且全部会以全息的形式出现在空中,即使你在驾驶汽车时也可以与之交互。不过,那是未来,在那一刻到来之前,我们所有人都只能将信息分散在笔记本电脑、手机、平板电脑和智能冰箱上。不幸的是,这意味着当我们需要来自该设备的信息时,我们通常必须查看该设备。

虽然不完全是像全息终端或飞行汽车那样酷炫,但 srevin saju 开发的 guiscrcpy 是一个可以在一个地方整合多个屏幕,让你有一点未来感觉的应用程序。

Guiscrcpy 是一个基于屡获殊荣的一个开源引擎 scrcpy 的一个开源项目(GUN GPLv3 许可证)。使用 Guiscrcpy 可以将你的安卓手机的屏幕投射到你的电脑,这样你就可以查看手机上的一切东西。Guiscrcpy 支持 Linux、Windows 和 MacOS。

不像其他 scrcpy 的替代软件一样,Guiscrcpy 并不仅仅是 scrcpy 的一个简单的复制品。该项目优先考虑了与其他开源项目的协作。因此,Guiscrcpy 对 scrcpy 来说是一个扩展,或者说是一个用户界面层。将 Python 3 GUI 与 scrcpy 分开可以确保没有任何东西干扰 scrcpy 后端的效率。你可以投射到 1080P 分辨率的屏幕,因为它的超快的渲染速度和超低的 CPU 使用,即使在低端的电脑上也可以运行的很顺畅。

Scrcpy 是 Guiscrcpy 项目的基石。它是一个基于命令行的应用,因此它没有处理你的手势操作的用户界面。它也没有提供返回按钮和主页按钮,而且它需要你对 Linux 终端比较熟悉。Guiscrcpy 给 scrcpy 添加了图形面板。因此,任何用户都可以使用它,而且不需要通过网络发送任何信息就可以投射和控制他的设备。Guiscrcpy 同时也为 Windows 用户和 Linux 用户提供了编译好的二进制文件,以方便你的使用。

安装 Guiscrcpy

在你安装 Guiscrcpy 之前,你需要先安装它的依赖包。尤其是要安装 scrcpy。安装 scrcpy 最简单的方式可能就是使用对于大部分 Linux 发行版都安装了的 snap 工具。如果你的电脑上安装并使用了 snap,那么你就可以使用下面的命令来一步安装 scrcpy。

$ sudo snap install scrcpy

当你安装完 scrcpy,你就可以安装其他的依赖包了。Simple DirectMedia Layer(SDL 2.0) 是一个显示和控制你设备屏幕的工具包。Android Debug Bridge (ADB) 命令可以连接你的安卓手机到电脑。

在 Fedora 或者 CentOS:

$ sudo dnf install SDL2 android-tools

在 Ubuntu 或者 Debian:

$ sudo apt install SDL2 android-tools-adb

在另一个终端中,安装 Python 依赖项:

$ python3 -m pip install -r requirements.txt --user

设置你的手机

为了能够让你的手机接受 adb 连接。必须让你的手机开启开发者选项。为了打开开发者选项,打开“设置”,然后选择“关于手机”,找到“版本号”(它也可能位于“软件信息”面板中)。不敢置信,只要你连续点击“版本号”七次,你就可以打开开发者选项。(LCTT 译注:显然这里是以 Google 原生的 Android 作为说明的,你的不同品牌的安卓手机打开开发者选项的方式或有不同。)

 title=

更多更全面的连接手机的方式,请参考安卓开发者文档

一旦你设置好了你的手机,将你的手机通过 USB 线插入到你的电脑中(或者通过无线的方式进行连接,确保你已经配置好了无线连接)。

使用 Guiscrcpy

当你启动 guiscrcpy 的时候,你就能看到一个主控制窗口。点击窗口里的 “Start scrcpy” 按钮。只要你设置好了开发者模式并且通过 USB 或者 WiFi 将你的手机连接到电脑。guiscrcpy 就会连接你的手机。

 title=

它还包括一个可写入的配置系统,你可以将你的配置文件写入到 ~/.config 目录。可以在使用前保存你的首选项。

guiscrcpy 底部的面板是一个浮动的窗口,可以帮助你执行一些基本的控制动作。它包括了主页按钮、返回按钮、电源按钮以及一些其他的按键。这些按键在安卓手机上都非常常用。值得注意的是,这个模块并不是与 scrcpy 的 SDL 进行交互。因此,它可以毫无延迟的执行。换句话说,这个操作窗口是直接通过 adb 与你的手机进行交互而不是通过 scrcpy。

 title=

这个项目目前十分活跃,不断地有新的特性加入其中。最新版本的具有了手势操作和通知界面。

有了这个 guiscrcpy,你不仅仅可以在你的电脑屏幕上看到你的手机,你还可以就像操作你的实体手机一样点击 SDL 窗口,或者使用浮动窗口上的按钮与之进行交互。

 title=

Guiscrcpy 是一个有趣且实用的应用程序,它提供的功能应该是任何现代设备(尤其是 Android 之类的平台)的正式功能。自己尝试一下,为当今的数字生活增添一些未来主义的感觉。


via: https://opensource.com/article/19/9/mirror-android-screen-guiscrcpy

作者:Seth Kenlon 选题:lujun9972 译者:amwps290 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

OneDrive 是微软的一项云存储服务,它为每个用户提供 5GB 的免费存储空间。它已与微软帐户集成,如果你使用 Windows,那么已在其中预安装了 OneDrive。

OneDrive 无法在 Linux 中作为桌面应用使用。你可以通过网页访问已存储的文件,但无法像在文件管理器中那样使用云存储。

好消息是,你现在可以使用一个非官方工具,它可让你在 Ubuntu 或其他 Linux 发行版中使用 OneDrive。

Insync 在 Linux 上支持 Google Drive 时,它变成了 Linux 上非常流行的高级第三方同步工具。我们有篇对 Insync 支持 Google Drive 的详细点评文章。

而最近发布的 Insync 3 支持了 OneDrive。因此在本文中,我们将看下如何在 Insync 中使用 OneDrive 以及它的新功能。

非 FOSS 警告

少数开发者会对非 FOSS 软件引入 Linux 感到痛苦。作为专注于桌面 Linux 的门户,即使不是 FOSS,我们也会在此介绍此类软件。

Insync 3 既不是开源软件,也不免费使用。你只有 15 天的试用期进行测试。如果你喜欢它,那么可以按每个帐户终生 29.99 美元的费用购买。

我们不会拿钱来推广它们(以防你这么想)。我们不会在这里这么做。

在 Linux 中通过 Insync 获得原生 OneDrive 体验

尽管它是一个付费工具,但依赖 OneDrive 的用户或许希望在他们的 Linux 系统中获得同步 OneDrive 的无缝体验。

首先,你需要从官方页面下载适合你 Linux 发行版的软件包。

你也可以选择添加仓库并进行安装。你将在 Insync 的官方网站看到说明。

安装完成后,只需启动并选择 OneDrive 选项。

另外,要注意的是,你添加的每个 OneDrive 或 Google Drive 帐户都需要单独的许可证。

现在,在授权 OneDrive 帐户后,你必须选择一个用于同步所有内容的基础文件夹,这是 Insync 3 中的一项新功能。

Insync 3 Base Folder

除此之外,设置完成后,你还可以选择性地同步本地或云端的文件/文件夹。

Insync Selective Sync

你还可以通过添加自己的规则来自定义同步选项,以忽略/同步所需的文件夹和文件,这完全是可选的。

Insync Customize Sync Preferences

最后,就这样完成了。

Insync 3

你现在可以在包括带有 Insync 的 Linux 桌面在内的多个平台使用 OneDrive 开始同步文件/文件夹。除了上面所有新功能/更改之外,你还可以在 Insync 上获得更快/更流畅的体验。

此外,借助 Insync 3,你可以查看同步进度:

总结

总的来说,对于希望在 Linux 系统上同步 OneDrive 的用户而言,Insync 3 是令人印象深刻的升级。如果你不想付款,你可以尝试其他 Linux 的免费云服务

你如何看待 Insync?如果你已经在使用它,到目前为止的体验如何?在下面的评论中让我们知道你的想法。


via: https://itsfoss.com/use-onedrive-on-linux/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出