阿里云上的ssh登陆和用户管理

ssh登陆

创建实例的时候,直接绑定ssh key,后续用pem或ppk格式的private key登陆实例。

目前不再支持用户名/密码登陆方式

默认用户有密码吗?

Ubuntu 官方镜像在阿里云上默认使用 ubuntu 用户登录。
该用户默认没有设置密码,但被配置为可通过 sudo 免密码执行命令(通过 /etc/sudoers 中的配置,通常是 ubuntu ALL=(ALL) NOPASSWD:ALL)。
因此,即使没有密码,你依然可以正常运行 sudo 命令,不会遇到障碍。

是否推荐设置密码?

不推荐设置密码的情况(推荐做法):

如果你只通过 SSH 密钥认证访问实例(这是最佳安全实践),
并且不需要通过密码登录(如控制台 VNC、本地终端等),
那么不需要为 ubuntu 用户设置密码。
保持无密码状态可以减少暴力破解风险(即使攻击者知道用户名,也无法用密码登录)。

sshd配置文件中设置

——vi /etc/ssh/sshd_config

To disable tunneled clear text passwords, change to no here!

PasswordAuthentication no
PermitEmptyPasswords no

可以考虑设置密码的情况:

你需要通过阿里云控制台的 VNC 或 Web Shell(比如 ECS 实例连接管理终端)进行登录 —— 这些方式可能要求用户密码。
你计划使用 su、sudo -S 或某些脚本/工具依赖用户密码进行身份验证。

建议做法

保持默认:不为 ubuntu 用户设置密码。
确保 SSH 密钥安全保管。
如需控制台登录,可临时设置密码,操作完成后可删除(passwd -d ubuntu),但需注意某些系统可能不允许无密码用户登录控制台。

问题:在同一个ubuntu系统上部署多个服务,以来的环境版本可能不同,怎么办?

设置不同的环境

(一)按照语言不同配置不同的环境

python语言的环境隔离

env/virtualenv

python3 -m venv ~/envs/jupyter_env
source ~/envs/jupyter_env/bin/activate
pip install jupyterlab

conda

conda create -n jupyter_env python=3.10
conda activate jupyter_env
conda install jupyterlab

node.js语言的环境隔离

nvm(

nvm install 18
nvm use 18
npm install -g hexo-cli
cd /path/to/hexo-site
npm install

(二)使用docker进行隔离

每个服务打包成独立容器,完全隔离运行时、依赖、网络等。

为 Hexo 创建 Dockerfile(基于 Node 镜像)

为 Jupyter Lab 创建 Dockerfile(基于 Python 镜像)

使用 docker-compose.yml 统一管理:

version: ‘3’
services:
hexo:
build: ./hexo-site
ports:
- “4000:4000”
jupyter:
build: ./jupyter-config
ports:
- “8888:8888”

(三)使用系统级用户隔离(较粗糙但简单)

为每个服务创建独立系统用户,配合各自环境变量和家目录。
sudo useradd -m hexo_user
sudo useradd -m jupyter_user
然后分别以不同用户登录或 sudo -u 运行服务,各自管理自己的 Node/Python 环境。
适用于不想用容器但希望避免全局污染的场景。

(四)使用 Podman(Docker 的无守护进程替代)

与 Docker 类似,但更轻量、无需 root,适合桌面或安全要求高的环境。

(五)使用 systemd-nspawn 或 LXC(轻量虚拟机)

比 Docker 更重,但提供接近完整系统的隔离。一般用于需要内核级隔离但又不想开完整 VM 的场景。

用 Hexo 部署博客,且同时运行 Jupyter Lab 做数据分析,nvm + conda + Docker 是一个稳健组合。

0%