SSH服务属于远程管理工作中的基础操作,但是特殊情况可能需要封闭内网服务器、生产环境隔离机、或者工控机房设备,我们可能需要在没有互联网的情况下配置SSH服务。这种时候需要充分利用本地资源、离线安装软件包并进行安全配置。下面是关于Ubuntu 14.04系统无网环境下完成SSH服务搭建和配置流程。
什么情况下需要在无网环境下配置SSH
不少企业为保障服务器安全,会把生产环境服务器完全都隔离外网,禁止直接联网。这种情况下如果想要SSH远程登录和管理服务器,必须提前准备好所需软件包,并在本地环境下完成安装和配置。
准备工作
在无网络环境中部署SSH,首先需要有网络的另一台机器来准备所需安装包。确定目标服务器架构,在联网机器上确认目标服务器CPU架构(x86_64、i386、arm等):
uname -m
对于大多数x86服务器,输出结果为 x86_64。
获取Ubuntu版本信息,确认目标服务器系统版本:
lsb_release -a
输出中如果是 Ubuntu 14.04,则需要下载对应版本的软件包。
离线准备SSH安装包
Ubuntu 14.04默认SSH服务来自 openssh-server 软件包,但该包依赖其他组件,因此我们需要一次性下载所有依赖。
在有网络的Ubuntu 14.04机器上执行:
sudo apt-get install --download-only openssh-server
这会将 openssh-server 及其依赖下载到 /var/cache/apt/archives/ 目录。
将安装包打包传输,将所有 .deb 文件打包:
cd /var/cache/apt/archives/
tar czvf openssh_offline.tar.gz *.deb
然后通过U盘或其他介质将该压缩包拷贝到无网络服务器上。
离线安装SSH服务上,在无网络服务器上解压安装包:
tar xzvf openssh_offline.tar.gz
cd archives
sudo dpkg -i *.deb
如果缺少依赖,可能会报错,可再次执行:
sudo apt-get -f install
由于无网络环境,apt-get -f install 会直接修复本地依赖,不会联网下载。
SSH服务配置中,在安装完成后,SSH服务会自动生成配置文件 /etc/ssh/sshd_config,我们需要根据服务器安全策略调整参数。修改配置文件,用文本编辑器打开:
sudo vi /etc/ssh/sshd_config
建议调整以下参数:
Port 22
PermitRootLogin no
PasswordAuthentication yes
AllowUsers adminuser
Port:可以改为非默认22端口,防止被扫描攻击
PermitRootLogin:禁止root直接登录
AllowUsers:限制可以登录的用户
启动SSH服务
sudo service ssh start
如果要在系统启动时自动启动:
sudo update-rc.d ssh defaults
检查SSH服务状态:
ps -ef | grep sshd
出现 /usr/sbin/sshd 表示SSH服务已运行。
无网络环境下的连接测试,在同一内网的另一台机器上,尝试连接:
ssh adminuser@192.168.1.100
如果提示输入密码并成功登录,则说明SSH服务部署成功。
在无网络的服务器上,虽然外部攻击概率小,但内网风险依然存在,建议使用密钥来代替密码,在有网络的电脑上生成密钥:
ssh-keygen -t rsa
将生成的 id_rsa.pub 内容添加到服务器用户目录的 ~/.ssh/authorized_keys 中,并设置权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
然后在 sshd_config 中关闭密码登录:
PasswordAuthentication no
更改默认端口例如改为 2222,降低被扫描风险。
限制IP访问,在 /etc/hosts.allow 中指定允许的IP:
sshd: 192.168.1.*
排查启动失败检查 /var/log/auth.log 和 /var/log/syslog,定位错误原因。端口未开放可以使用 netstat -tulpn | grep ssh 确认端口监听状态,如果未监听,检查 sshd_config是否配置错误。权限错误中.ssh 目录权限必须严格,目录 700,文件 600,否则SSH会拒绝连接。
在无网络环境下配置SSH服务,需要提前准备安装包、正确配置依赖,并在安装后进行安全加固。对于Ubuntu 14.04这种较老版本,APT源可能已经下线,因此必须在同版本有网机器上下载依赖包,才能顺利离线部署。掌握这种方法,对于运维人员在隔离网络、工业控制、政府机构等环境下的工作至关重要。