新装一台 Ubuntu 服务器,本机敲 ssh localhost 提示 Connection refused,别急着怀疑网络,多半是 ssh 服务端压根没装。ssh安装 分客户端和服务端两半,客户端往往系统自带,要装的通常是服务端。
Ubuntu / Debian 路线
两条命令装好并启动:
sudo apt update && sudo apt install openssh-server
sudo systemctl enable --now ssh
有 ufw 防火墙就放行端口:
sudo ufw allow ssh
验证就用开头那条 ssh localhost,第一次连会问指纹,输 yes 回车。远程连接换成 ssh 用户名@服务器IP 即可。
Windows 路线
当客户端:Windows 10 1809 之后系统自带 OpenSSH 客户端,cmd 里直接 ssh user@主机 就能用,PuTTY 都可以省了。当服务端:打开 设置-应用-可选功能,在添加可选功能里搜 OpenSSH 服务器,装完在 services.msc 服务列表里找到 OpenSSH Server,启动并设为自动。老版本系统没有这个入口,用 PowerShell 的 Add-WindowsCapability 命令也能装,能力名称以微软文档为准。
装完之后的安全习惯
- 暴露公网的机器优先改用密钥登录,客户端用 ssh-keygen 生成密钥对,公钥放到服务器上
- 禁用 root 账号直接远程登录,日常用普通用户加 sudo
- 改过默认端口的话,云服务器的安全组记得同步放行新端口
公钥要追加到服务器的 authorized_keys 文件里才生效。改 sshd 配置前先留一个已经连上的会话别断开,配置写错还能救回来,这个习惯能省掉半夜去机房接显示器的麻烦。
服务端配置文件在 /etc/ssh/sshd_config,改完记得重启 ssh 服务才生效。真正容易疏忽的是防火墙和安全组两层拦截,连不上时按服务状态、端口、防火墙的顺序逐层排查,比乱试配置快得多。