怎么使用永久免费的VPS服务器 Google Cloud Shell

CLOUD SHELL
在任意浏览器中通过命令行管理您的基础架构和应用

Google Cloud Shell 让您可以直接在浏览器中通过命令行访问云端资源。您可以轻松管理项目和资源,而无需在系统上安装 Google Cloud SDK 或其他工具。Cloud Shell 让您可以根据自己的需要,随时使用最新且经过全面身份验证的 Cloud SDK gcloud 命令行以及其他必要的实用工具。

官方文档: https://cloud.google.com/shell/docs

已登录的用户在网络浏览器中从 GOOGLE CLOUD CONSOLE 启动 CLOUD SHELL 实例,并检查 GOOGLE CLOUD 组件的版本。

安全可靠且默认经过全面身份验证

Cloud Shell 提供内置授权,方便您访问 Google Cloud Platform 上托管的项目和资源。

您喜爱的工具已预先装好,并且是最新版本

Cloud Shell 预装了许多您喜爱的命令行工具,包括 bash 和 sh,以及 emacs 和 vim,并且均为最新版本。MySQL 客户端、Docker 和 Kubernetes 等管理工具已配置完毕并准备就绪,因此您无需费神思考如何安装最新版本工具及其所有依赖项,只要连接到 Cloud Shell 即可使用!

方便开发者使用

开发者可以轻松使用所有自己喜欢的且预先配置好的开发工具,包括 Java、Go、Python、Node.js、PHP 及 Ruby 开发和部署工具。您可以在 Cloud Shell 实例中运行 Web 应用,并通过浏览器进行预览,然后使用预先配置的 Git 和 Mercurial 客户端将其提交回代码库。

5GB 永久性磁盘存储空间

Cloud Shell 提供 5GB 的永久性磁盘存储空间,作为您在 Cloud Shell 实例上的 $HOME 目录。您存储在主目录中的所有文件(包括脚本以及 .bashrc 和 .vimrc 等用户配置文件)在不同会话之间保持不变。

方案

下载安装官方SDK: https://cloud.google.com/sdk/docs/downloads-versioned-archives

地址获取: 点击下载

也可以用 :MobaXterm_Personal_12.3     FinalShell:点击下载

CodeCommand 来干点什么吧

先安装sdk 下载64位版,右键管理员安装

添加系统变量  sdk\bin\  

获取到地址就登入吧 

ssh -p 6000 root@devshell-vm-38591f26-0c1a-4990-8066-eef88a294bd1.cloudshell.dev

在用户\.ssh  文件夹下面  google_compute_engine 是私钥

远程centos密钥ssh登入

ssh-keygen -t rsa 一路回车生成密钥

文件600权限  .ssh700权限

id_rsa       authorized_keys      改成google_compute_engine 里面的私钥

ssh -p 6000 root@devshell-vm-38591f26-0c1a-4990-8066-eef88a294bd1.cloudshell.dev

命令  

初始化: gcloud init

启动:gcloud alpha cloud-shell ssh

选择区域:gcloud config set compute/region us-east1

目前 可用计划任务,防止掉线。配额还在测试!

防掉线

  • 可以用Shell 或 PHP 做个计划任务,30分钟主动连接一下SSH,目前稳定,不重置不关机!

翻墙

目前还没有 好方法,但是可以用ssh隧道代理

注意

Cloud Shell 会话的后端虚拟机实例并非永久分配给该会话,当会话处于非活跃状态一小时后,相关虚拟机即会终止。实例终止后,您在 $HOME 之外对其所做的任何修改都将丢失。

不推荐搭建什么翻墙,做做爬虫、转存等发挥更大价值

 

 

 

 

ssh 登录服务器的两种方式

如果是一个比较喜欢折腾的人,在某个云平台购买了一台云主机,除了通过云平台提供的 web 页面上的命令行工具,其实也可以在本地电脑上面通过 ssh 进行登录。具体地又可以分成两种:

  1. ssh 用户名密码登录
  2. ssh 证书(免密码)登录

需要说明一下,后者的安全性高于前者,因此一般会默认不启用第一种登录方式,只允许第二种登录方式。

SSH 为 Secure Shell 的缩写,是建立在应用层基础上的安全协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。ssh 分成服务端与客户端,其中服务端运行在被登录的机器上面,客户端运行在操作的机器上面。

用户名密码登录

通常 openssh-server 默认允许用户名密码登录,但是不排除为了安全考虑云上的服务器上禁止开启 ssh 的这种登录方式,毕竟用户名加密码的方式很容易被爆力破解。如果大家理解其中的厉害关系,可以检查修改 /etc/ssh/sshd_config(sshd 的配置文件)中 PasswordAuthentication 这一项配置为 yes(一般默认是 yes )。修改完配置重启 sshd 服务就可以使用用户名和密码登录了。

1
2
3
4
# -l 指定用户名为 wangao
# -p 指定端口为 2222,默认为 22
# 输入下面的命令后根据提示输入密码就可以登录到对应的服务器了 
ssh -l wangao -p 2222 192.168.56.101

ssh 免密登录

所谓免密登录,也就是说不需要人工再输入用户名和密码了,但这并不意味着没有了鉴权的动作,服务器毕竟是自己的,不能随便允许别人登录到上面去搞破坏。ssh 免密登录通过证书进行鉴权。

这里的证书分为公钥与私钥,我们可以简单地理解为:公钥 = 锁;私钥 = 钥匙。

流程基本是这样的:如果我们想要从 A 免密登录到 B,就需要把公钥(锁)放到 B 的特定位置,而 A 拥有私钥(钥匙)的完整副本。当 A 拿着私钥去访问 B 的时候,B 发现自己身上有一把锁(B 可能有很多公钥)可以被 A 的私钥打开,于是给 A 放行,A 就成功登录到 B 了。

如何得到证书(公钥与私钥)
上面提到的证书可以通过两种方式获取得到。
第一种是向服务器管理员索取,一般索取得到的是私钥,这样就可以免密登录到任何存放了公钥的服务器了。
第二种是自己生成证书(比如使用 ssh-keygen),然后把公钥放到对应的服务器的特定位置,就可以免密登录到对应的服务器了。

1
2
3
4
5
# 通过 ssh-keygen 可以生成需要的证书 
# 根据提示一路按 RETURN(ENTER) 即可 
# 默认情况下会生成 id_rsa 和 id_rsa.pub 
# id_rsa 为私钥,id_rsa.pub 为公钥 
ssh-keygen

公钥放置位置

linux 系统允许多用户登录同一台服务器,一般情况下 /home 目录会有非常多的用户目录。可以把公钥放置在任何一个用户目录的 $HOME/.ssh/authorized_keys 文件中,比如 cat id_rsa.pub >> /home/wangao/.ssh/authorized_keys ,这样就可以使用私钥以 wangao 的名义登录对应的服务器了。

1
2
3
4
5
6
7
# -i 指定私钥,默认条件下使用 ~/.ssh/id_rsa
# -l 指定用户名 
# -p 指定端口,默认为 22
ssh -i ~/.ssh/id_rsa -p 2222 -l wangao 192.168.56.101

# 上面的命令等同于 
ssh -p 2222 wangao@192.168.56.101

ssh 免密码登录一般流程

生成 PublicKey

建议设置并牢记 passphrase 密码短语,以 Linux 生成为例

Linux:ssh-keygen -t rsa
[私钥 (id_rsa) 与公钥 (id_rsa.pub)]
Windows:SecurCRT/Xshell/PuTTY
[SSH-2 RSA 2048]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 生成 SSH 密钥对 
ssh-keygen -t rsa

Generating public/private rsa key pair.
# 建议直接回车使用默认路径 
Enter file in which to save the key (/root/.ssh/id_rsa): 
# 输入密码短语(留空则直接回车)
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:
aa:8b:61:13:38:ad:b5:49:ca:51:45:b9:77:e1:97:e1 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|    .o.          |
|    ..   . .     |
|   .  . . o o    |
| o.  . . o E     |
|o.=   . S .      |
|.*.+   .         |
|o.*   .          |
| . + .           |
|  . o.           |
+-----------------+

复制密钥对

也可以手动在客户端建立目录和 authorized_keys,注意修改权限

1
2
3
4
# 复制公钥到无密码登录的服务器上, 22 端口改变可以使用下面的命令 
#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.15.241

修改 SSH 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 编辑 sshd_config 文件 
vi /etc/ssh/sshd_config

# 禁用密码验证 
PasswordAuthentication no
# 启用密钥验证 
RSAAuthentication yes
PubkeyAuthentication yes
# 指定公钥数据库文件 
AuthorsizedKeysFile .ssh/authorized_keys

sed -i "s/^PasswordAuthentication.*/PasswordAuthentication no/g" /etc/ssh/sshd_config
sed -i "s/^#RSAAuthentication.*/RSAAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PubkeyAuthentication.*/PubkeyAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#AuthorizedKeysFile.*/AuthorizedKeysFile .ssh\/authorized_keys/g" /etc/ssh/sshd_config

重启 SSH 服务前建议多保留一个会话以防不测

1
2
3
4
5
6
# RHEL/CentOS 系统 
service sshd restart
# Ubuntu 系统 
service ssh restart
# Debian 系统 
/etc/init.d/ssh restart

手动增加管理用户

可以在 == 后加入用户注释标识方便管理

1
2
3
4
echo 'ssh-rsa XXXX' >>/root/.ssh/authorized_keys

# 复查 
cat /root/.ssh/authorized_keys

使用 Ansible 添加 ssh 信任关系

使用 ansible authorized_key module 即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
- hosts: all
  remote_user: root
  gather_facts: false

  tasks:
    - name: authadd root
      authorized_key:
        user: root
        state: present
        key: "{{ lookup('file','/root/.ssh/id_rsa.pub') }}"
        path: /root/.ssh/authorized_keys
        manage_dir: no
      tags:
        - root

发表评论

邮箱地址不会被公开。 必填项已用*标注