注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 Oracle Cloud Infrastructure 访问和管理 Linux 计算实例

简介
在本教程中,我们将介绍如何访问 Linux 实例的控制台来安装应用程序或执行管理操作。

连接方法
可以使用多种方法访问 Linux 计算实例。我们列出了最常见的方法。
-
方法 1:通过 SSH 通过 macOS 终端使用 SSH 私有密钥连接到计算实例公共 IP 地址。
-
方法 2:通过终端控制台通过 SSH 用户名和密码通过 Oracle Cloud Infrastructure (OCI) Cloud Shell 控制台连接到计算实例。
-
方法 3:通过 SSH 将 Royal TSX 应用程序的 SSH 私有密钥连接到计算实例公共 IP 地址。
-
方法 4:通过 SSH 通过 OCI Cloud Shell 的 SSH 私有密钥连接到计算实例专用 IP 地址。
-
方法 5:通过 SSH 通过 OCI Cloud Shell 使用 SSH 用户名和密码连接到计算实例的专用 IP 地址。
-
方法 6:通过 SSH 将 OCI 堡垒主机的 SSH 私有密钥连接到计算实例专用 IP 地址。
-
方法 7:在虚拟云网络 (Virtual Cloud Network,VCN) 内使用阶段性计算实例。
目标
- 使用 Oracle Cloud Infrastructure 访问和管理 Linux 计算实例。
方法 1:通过 SSH 通过 macOS 终端使用 SSH 私有密钥连接到计算实例公共 IP 地址
在此方法中,我们将使用 SSH 和 OCI 提供的公共 IP 地址连接到 Linux 实例,以使用 macOS 终端直接连接到实例。

-
运行以下命令。
-
使用命令行界面 (command line interface,CLI) 导航到存储公钥和私钥的文件夹。
cd Downloads cd MyFreeInstanceKeys ls -l -
使用在其中指定私有密钥的 SSH 命令连接到实例。
-
限制私钥的权限并确保访问受到限制,然后才能使用。
chmod 600 ssh-key-2024-01-31.key -
使用在其中指定私有密钥的 SSH 命令连接到实例。
ssh -i ssh-key-2024-01-31.key opc@xxx.xxx.xxx.229 -
运行以下命令以验证 IP 地址。
ip a -
验证 IP 地址。

-
方法 2:通过终端控制台通过 OCI Cloud Shell 控制台使用 SSH 用户名和密码连接到计算实例
如果您与实例没有任何网络连接并且无法使用 SSH 登录,则可以使用此方法作为后门。
方法 2 的先决条件
我们需要先创建本地用户名和密码,为此,我们需要使用其他方法之一的私钥通过 SSH 登录。这是在方法 1,3,4,5 和 6 中完成的。
-
使用 SSH 使用私有密钥登录时,我们可以创建新的本地用户名并为该新用户名分配密码。运行以下命令。
sudo useradd console sudo passwd console
还可以在实例创建过程中创建新的本地用户名和密码。但我们将在另一个教程中展示这一点。
继续使用方法 2
现在,我们已经创建了本地用户名和密码,我们可以继续通过终端控制台使用 SSH 用户名和密码通过 OCI Cloud Shell 控制台连接到计算实例。
在此方法中,我们将使用 OCI 提供的本地控制台连接到 Linux 实例,以使用 OCI Cloud Shell 直接连接到实例。

-
连接到 OCI Cloud Shell。
- 在实例详细信息页面中,向下滚动。
- 单击控制台连接以启动 OCI Cloud Shell 并连接到控制台。

-
单击启动 Cloud Shell 连接。

-
OCI Cloud Shell 窗口仅提供用户名而非密码。
-
需要创建此用户名和密码,默认情况下该用户名和密码不存在。
- 此时将打开 OCI Cloud Shell 窗口。
- 提示符提供用户名。

-
在控制台终端中键入本地用户名和密码。

方法 3:通过 SSH 通过 Royal TSX 应用程序使用 SSH 私有密钥连接到计算实例公共 IP 地址
在此方法中,我们将使用 SSH 和 OCI 提供的公共 IP 地址连接到 Linux 实例,以使用 Royal TSX 应用程序直接连接到实例。

-
打开 Royal TSX 应用程序并创建新文档。
- 右键单击连接文件夹。
- 单击添加。
- 单击终端。

-
在终端选项卡中,输入以下信息。
- 输入 Display Name 。
- 在计算机名称中输入实例的公共 IP 地址或 FQDN。
- 单击身份证明。

-
在身份证明选项卡中,输入以下信息。
- 确保选择身份证明。
- 选择指定用户名和密码。
- 输入用户名。
- 选择 Private Key File 选项卡。

-
在 Private Key File 选项卡中,输入以下信息。
- 选择 Path to Private Key File 。
- 选择 Private Key File 路径。
- 单击应用并关闭。

- 双击新创建连接以登录。
- 运行
ip a命令以查看专用 IP 地址。

方法 4:通过 SSH 通过 OCI Cloud Shell 使用 SSH 私有密钥连接到计算实例专用 IP 地址
在此方法中,我们将使用 OCI 提供的 OCI Cloud Shell 连接到 Linux 实例,并使用专用 IP 地址连接到实例。

-
登录到 OCI 控制台,然后单击 OCI Cloud Shell 图标以打开 Cloud Shell 控制台。

-
单击 Cloud Shell 。

确保 Cloud Shell 窗口打开。

-
输入
N以暂时跳过教程。
要使用专用 IP 地址连接到 Linux 实例,Cloud Shell 必须能够访问与 Linux 实例连接到的子网。
可以通过将 Cloud Shell 插入 Linux 实例所在的同一 VCN 和子网来执行此操作。默认情况下,网络设置为 Public ,但是我们将通过动态创建新的专用网络来更改此设置。
-
单击 Network(网络),然后选择 Private network definition list(专用网络定义列表)。

-
单击 Create private network definition 。

-
在创建专用网络定义中,输入以下信息。
- 输入名称。
- 选择 Linux 实例所在的对应 VCN 。
- 选择 Linux 实例所在的子网。
- 选择 Use active network(使用活动网络)可立即激活专用网络。
- 单击创建。

-
请注意,网络的状态将更改为使用连接新建的专用网络。完成此操作需要几秒的时间。

- 已连接专用网络。
- 单击关闭可关闭专用网络定义列表。

- 运行
ls-l命令,看到主文件夹中没有私钥。 - 要上载私钥,请单击滚轮。

- 单击上传。

- 单击 Select from your computer(从计算机中选择)。
- 单击上传。

- 从本地计算机中选择私钥。
- 单击打开。

- 查看在上一步中选择的密钥。
- 单击上传。

- 确保上载已完成。
- 单击隐藏。

-
运行
ls-l命令检查私钥。
- 限制私钥的权限,并确保访问在可以使用之前受到限制。
- 使用 SSH 命令连接到实例并指定私有密钥。
- 运行以下命令以验证 IP 地址。
- 验证 IP 地址。
- 最小化 Cloud Shell 控制台。

-
Cloud Shell 控制台最小化。单击还原以还原 Cloud Shell 控制台。

-
查看恢复的 Cloud Shell 控制台。单击 X 关闭 Cloud Shell 窗口。

-
单击退出以关闭 Cloud Shell 窗口。

现在,我们返回实例概述。

方法 5:通过 SSH 通过 OCI Cloud Shell 使用 SSH 用户名和密码连接到计算实例专用 IP 地址
在方法 4 中,我们使用私有密钥登录到 Linux 实例。在此方法中,我们将使用用户名和密码。

-
使用带有用户名的以下 SSH 命令登录,并注意到我们收到权限被拒绝错误。
注:我们使用了以前使用用户名
console创建的相同用户。ssh console@10.0.0.163
-
要对此进行测试并修复错误,请创建一个新的 Linux 计算实例。

使用 SSH 使用私有密钥登录,并在新 Linux 实例上创建本地用户名和密码。
默认情况下,Linux 映像 SSH 配置仅允许使用私有密钥登录,不允许使用 SSH 的用户名和密码登录。以前,我们能够使用用户名和密码,但这是通过直接控制台连接。
-
更改
/etc/ssh/sshd_config文件中的设置。

-
使用以下命令更改
sshd_config文件。sudo more /etc/ssh/sshd_config/etc/ssh/sshd_config文件包含以下设置:[opc@myfreeinstance2 ssh]$ sudo more /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.103 208/04/09 20:41:22 tj 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:/usr/local/sbin:/usr/sbin # 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 :: HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # This system is following system-wide crypto policy. The changes to # crypto properties (Ciphers, MACs, ...) will not have any effect here. # They will be overridden by command-line options passed to the server # on command line. # Please, check manual pages for update-crypto-policies(8) and sshd_config(5). # Logging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: #LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #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 #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 no # 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 yes 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 RHEL and may cause several # problems. UsePAM yes #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes # It is recommended to use pam_motd in /etc/pam.d/sshd instead of PrintMotd, # as it is more configurable and versatile than the built-in version. PrintMotd no #PrintLastLog yes #TCPKeepAlive yes #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #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 [opc@myfreeinstance2 ssh]$ -
将以下代码添加到文件中,以允许使用 SSH 使用用户名和密码登录。
PasswordAuthentication yes -
保存文件后。在 Linux 实例上运行以下命令并重新启动 SSH 服务器。
sudo systemctl restart sshd -
打开 OCI Cloud Shell。
- 确保 Cloud Shell 仍连接到 Linux 映像可用的专用网络。
- 使用 SSH 命令使用该用户名进行登录。
- 输入
yes以继续。 - 输入用于登录的口令。

方法 6:通过 SSH 通过 OCI 堡垒主机使用 SSH 私有密钥连接到计算实例专用 IP 地址
在此方法中,我们将使用 OCI 堡垒服务连接到 Linux 实例,并从那里通过隧道连接使用专用 IP 地址连接到实例。

-
在使用 OCI 堡垒服务之前,我们需要先创建 OCI 堡垒服务。
- 打开 OCI 控制台,然后单击汉堡菜单。
- 单击身份和安全。
- 单击堡垒。

-
单击创建堡垒并输入以下信息。

- 输入堡垒名称。
- 选择要通过堡垒服务访问的 VCN。
- 选择要通过堡垒服务访问的子网。
- 输入要允许堡垒服务的 IP 地址或 CIDR。对于本教程,我们使用 ISP 连接的起始 IP 地址。
- 单击 Create bastion 。

-
单击新创建的堡垒服务。

-
请注意,状态设置为 CREATING 。

- 几秒钟后,我们将看到状态已更改为 ACTIVE 。
- 单击创建会话可为要管理的 Linux 实例创建会话。

- 选择会话类型作为托管 SSH 会话。
- 输入用户名。
- 输入要通过堡垒服务连接到的 Linux 计算实例。
- 选择要为此特定会话配置的公共密钥。
- 确保选择了公共密钥。
- 单击创建会话。

- 请注意以下错误:要创建托管 SSH 会话,必须在目标实例上启用堡垒插件,但禁用了插件,这意味着要使用堡垒连接到 Linux 实例,需要在 Linux 实例上安装一段软件或插件,并且需要启用插件。
- 让我们在 Linux 实例和 OCI 控制台上启用此插件,单击汉堡包菜单。

-
单击实例。

-
选择 Linux 计算实例。

-
向下滚动。

-
请注意,堡垒插件已设置为禁用。

-
要启用堡垒插件,请按照说明进行操作。
- 单击切换以启用堡垒插件。
-
等待,直到状态显示正在运行。
注:将切换从已禁用更改为已启用时,在实际更改状态之前可能需要一分钟,因为在后台需要下载、安装和启动插件,这需要时间。
- 让我们在堡垒插件上重新创建会话。在 OCI 控制台上,单击汉堡菜单。

- 单击身份和安全。
- 单击堡垒。

-
单击“Bastion(堡垒)”。

-
单击创建会话可为要管理的 Linux 实例创建会话。

- 选择会话类型作为托管 SSH 会话。
- 输入用户名。
- 选择要通过堡垒连接到的 Linux 计算实例。
- 选择 Choose SSH key file(选择 SSH 密钥文件)。
- 选择要为此特定会话配置的公共密钥。
- 确保选择了公共密钥。
- 单击创建会话。

-
请注意,状态为 Creating 。

- 创建会话后,请参见状态活动。
- 请注意,会话的默认时间为 3 小时。3 小时后,会话将自动停止,我们将无法再使用该会话,我们需要创建一个新会话。

- 将 help 菜单拖放到另一个位置,以便我们可以访问会话菜单。
- 单击三个点可访问会话菜单。
- 选择复制 SSH 命令。

-
将 SSH 命令粘贴到文本编辑器中,并注意
<privatekey>占位符。
将
<privatekey>占位符替换为您的私钥的名称。使用与创建堡垒会话时使用的公共密钥相对应的私钥。
示例
-
原命令。
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-amsterdam-1.amaaaaaaccocy5aapmrn66fdxdlg7lhefofhndmeq2ir6owe5afm2v7oghiq@host.bastion.eu-amsterdam-1.oci.oraclecloud.com" -p 22 opc@10.0.0.176 -
修改的命令。
ssh -i ssh-key-2024-01-31.key -o ProxyCommand="ssh -i ssh-key-2024-01-31.key -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-amsterdam-1.amaaaaaaccocy5aapmrn66fdxdlg7lhefofhndmeq2ir6owe5afm2v7oghiq@host.bastion.eu-amsterdam-1.oci.oraclecloud.com" -p 22 opc@10.0.0.176
-
-
通过堡垒会话连接到 Linux 实例。
- 使用完整复制的命令以及从计算机中添加的私钥,其中使用 macOS 终端存储私钥,以通过堡垒会话连接到 Linux 实例。
- 输入 yes 继续。
- 输入 yes 继续。
- 运行以下命令以验证 IP 地址。
- 验证 IP 地址。

-
在 OCI 控制台中打开堡垒会话设置。
- 单击三个点可访问会话菜单。
- 选择删除会话。

- 输入 Session(会话)名称以确认删除会话。
- 单击删除。

-
查看状态 Deleting(正在删除)。

删除会话后,状态将设置为已删除。

删除会话后,通过 macOS 终端打开的 SSH 会话现在也会终止。

堡垒插件不存在。
在此方法中,我们在已经运行的 Linux 实例上启用了 Bastion 插件。我们还可以在从头创建实例时启用堡垒插件。
选择“Advanced(高级)”选项,选择以下选项,然后继续创建实例。
- 单击 Oracle Cloud Agent 。
- 选择堡垒。

从头开始创建新映像,并在创建实例后检查堡垒插件状态,并且状态为正在运行 * 时,可能会看到错误消息,其中堡垒不存在 ... 。

在实际更改状态之前可能需要一分钟。因为在后台需要下载,安装和启动插件,这需要时间。等待 5 分钟,直到状态更改为正在运行。

当状态未更改且消息保持 Plugin Bastion not present... 时,Linux 实例可能无法访问 Internet 下载 Bastion 插件。对 VCN 中的互联网、NAT 和服务网关进行故障排除,以确保您的实例能够访问互联网。
方法 7:在虚拟云网络内使用 Stepstone 计算实例
在此方法中,我们将创建一个专用 Linux 实例,我们可以使用它作为某种阶梯式或专用堡垒,从那里我们将访问其他 Linux 实例。与使用 Oracle 免费提供的 OCI 堡垒服务相比,我们使用的资源可能会增加成本。
我们不会详细说明这种办法,因为这是我们前面解释的办法的组合。

后续步骤
在本教程中,我们提供了在 OCI 中访问和管理 Linux 实例的所有可能方法。我们可以直接从 Internet 和控制台访问 Linux 实例,也可以使用 OCI Cloud Shell、Bastion 或专用实例等中间步骤。
我们还展示了如何使用 SSH 使用私有密钥或公共密钥以及本地用户名和密码来连接到实例。
下图显示了所有可能的连接方法。

确认
- 作者 — Iwan Hoogendoorn(OCI 网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Access and Manage a Linux Compute Instance using Oracle Cloud Infrastructure
F93492-02
August 2024